package edu.uci.ics.hivesterix.runtime.jobgen; | |
import java.util.HashMap; | |
import java.util.List; | |
import org.apache.hadoop.hive.ql.exec.FileSinkOperator; | |
import org.apache.hadoop.hive.ql.exec.Operator; | |
import org.apache.hadoop.hive.ql.plan.PartitionDesc; | |
import edu.uci.ics.hivesterix.logical.expression.HiveFunctionInfo; | |
import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint; | |
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException; | |
import edu.uci.ics.hyracks.algebricks.common.utils.Pair; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.functions.FunctionIdentifier; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.functions.IFunctionInfo; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSink; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider; | |
import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema; | |
import edu.uci.ics.hyracks.algebricks.core.jobgen.impl.JobGenContext; | |
import edu.uci.ics.hyracks.algebricks.data.IPrinterFactory; | |
import edu.uci.ics.hyracks.algebricks.runtime.base.IPushRuntimeFactory; | |
import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor; | |
import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor; | |
import edu.uci.ics.hyracks.api.job.JobSpecification; | |
@SuppressWarnings("rawtypes") | |
public class HiveMetaDataProvider<S, T> implements IMetadataProvider<S, T> { | |
private Operator fileSink; | |
private Schema outputSchema; | |
private HashMap<S, IDataSource<S>> dataSourceMap; | |
public HiveMetaDataProvider(Operator fsOp, Schema oi, HashMap<S, IDataSource<S>> map) { | |
fileSink = fsOp; | |
outputSchema = oi; | |
dataSourceMap = map; | |
} | |
@Override | |
public IDataSourceIndex<T, S> findDataSourceIndex(T indexId, S dataSourceId) throws AlgebricksException { | |
return null; | |
} | |
@Override | |
public IDataSource<S> findDataSource(S id) throws AlgebricksException { | |
return dataSourceMap.get(id); | |
} | |
@Override | |
public boolean scannerOperatorIsLeaf(IDataSource<S> dataSource) { | |
return true; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getScannerRuntime(IDataSource<S> dataSource, | |
List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed, | |
IOperatorSchema opSchema, IVariableTypeEnvironment typeEnv, JobGenContext context, | |
JobSpecification jobSpec, Object implConfig) throws AlgebricksException { | |
S desc = dataSource.getId(); | |
HiveScanRuntimeGenerator generator = new HiveScanRuntimeGenerator((PartitionDesc) desc); | |
return generator.getRuntimeOperatorAndConstraint(dataSource, scanVariables, projectVariables, projectPushed, | |
context, jobSpec); | |
} | |
@Override | |
public Pair<IPushRuntimeFactory, AlgebricksPartitionConstraint> getWriteFileRuntime(IDataSink sink, | |
int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc) { | |
HiveWriteRuntimeGenerator generator = new HiveWriteRuntimeGenerator((FileSinkOperator) fileSink, outputSchema); | |
return generator.getWriterRuntime(inputDesc); | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime(IDataSource<S> dataSource, | |
IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys, | |
LogicalVariable payLoadVar, RecordDescriptor recordDesc, JobGenContext context, JobSpecification jobSpec) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getDeleteRuntime(IDataSource<S> dataSource, | |
IOperatorSchema propagatedSchema, IVariableTypeEnvironment typeEnv, List<LogicalVariable> keys, | |
LogicalVariable payLoadVar, RecordDescriptor recordDesc, JobGenContext context, JobSpecification jobSpec) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getResultHandleRuntime(IDataSink sink, | |
int[] printColumns, IPrinterFactory[] printerFactories, RecordDescriptor inputDesc, boolean ordered, | |
JobSpecification spec) throws AlgebricksException { | |
return null; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getWriteResultRuntime(IDataSource<S> arg0, | |
IOperatorSchema arg1, List<LogicalVariable> arg2, LogicalVariable arg3, JobGenContext arg4, | |
JobSpecification arg5) throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
@Override | |
public IFunctionInfo lookupFunction(FunctionIdentifier arg0) { | |
return new HiveFunctionInfo(arg0, null); | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexInsertRuntime( | |
IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, | |
IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys, | |
ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getIndexDeleteRuntime( | |
IDataSourceIndex<T, S> dataSource, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, | |
IVariableTypeEnvironment typeEnv, List<LogicalVariable> primaryKeys, List<LogicalVariable> secondaryKeys, | |
ILogicalExpression filterExpr, RecordDescriptor recordDesc, JobGenContext context, JobSpecification spec) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
} |