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.hivesterix.logical.expression.Schema; | |
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) | |
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> getDeleteRuntime( | |
IDataSource<S> arg0, IOperatorSchema arg1, | |
List<LogicalVariable> arg2, LogicalVariable arg3, | |
RecordDescriptor arg4, JobGenContext arg5, JobSpecification arg6) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
return null; | |
} | |
@Override | |
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> getInsertRuntime( | |
IDataSource<S> arg0, IOperatorSchema arg1, | |
List<LogicalVariable> arg2, LogicalVariable arg3, | |
RecordDescriptor arg4, JobGenContext arg5, JobSpecification arg6) | |
throws AlgebricksException { | |
// TODO Auto-generated method stub | |
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; | |
} | |
} |