当前位置: 首页>>代码示例>>Java>>正文


Java JoinNode类代码示例

本文整理汇总了Java中org.apache.tajo.engine.planner.logical.JoinNode的典型用法代码示例。如果您正苦于以下问题:Java JoinNode类的具体用法?Java JoinNode怎么用?Java JoinNode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


JoinNode类属于org.apache.tajo.engine.planner.logical包,在下文中一共展示了JoinNode类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testRightOuterMergeJoin0

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
@Test
public final void testRightOuterMergeJoin0() throws IOException, PlanningException {
  Expr expr = analyzer.parse(QUERIES[0]);
  LogicalNode plan = planner.createPlan(expr).getRootBlock().getRoot();
  JoinNode joinNode = PlannerUtil.findTopNode(plan, NodeType.JOIN);
  Enforcer enforcer = new Enforcer();
  enforcer.enforceJoinAlgorithm(joinNode.getPID(), JoinAlgorithm.MERGE_JOIN);

  FileFragment[] emp3Frags = StorageManager.splitNG(conf, "emp3", emp3.getMeta(), emp3.getPath(), Integer.MAX_VALUE);
  FileFragment[] dep3Frags = StorageManager.splitNG(conf, "dep3", dep3.getMeta(), dep3.getPath(), Integer.MAX_VALUE);
  FileFragment[] merged = TUtil.concat(emp3Frags, dep3Frags);

  Path workDir = CommonTestingUtil.getTestDir("target/test-data/testRightOuterMergeJoin0");
  TaskAttemptContext ctx = new TaskAttemptContext(conf,
      LocalTajoTestingUtility.newQueryUnitAttemptId(), merged, workDir);
  ctx.setEnforcer(enforcer);

  PhysicalPlanner phyPlanner = new PhysicalPlannerImpl(conf,sm);
  PhysicalExec exec = phyPlanner.createPlan(ctx, plan);

  ProjectionExec proj = (ProjectionExec) exec;
  assertTrue(proj.getChild() instanceof RightOuterMergeJoinExec);

  int count = 0;
  exec.init();
  while (exec.next() != null) {
    //TODO check contents
    count = count + 1;
  }
  assertNull(exec.next());
  exec.close();
  assertEquals(12, count);
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:34,代码来源:TestRightOuterMergeJoinExec.java

示例2: NLLeftOuterJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public NLLeftOuterJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftChild,
                           PhysicalExec rightChild) {
  super(context, plan.getInSchema(), plan.getOutSchema(), leftChild, rightChild);
  this.plan = plan;

  if (plan.hasJoinQual()) {
    this.joinQual = plan.getJoinQual();
  }

  // for projection
  projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  needNextRightTuple = true;
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());

  foundAtLeastOneMatch = false;
  rightNumCols = rightChild.getSchema().size();
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:21,代码来源:NLLeftOuterJoinExec.java

示例3: NLJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public NLJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec outer,
    PhysicalExec inner) {
  super(context, plan.getInSchema(), plan.getOutSchema(), outer, inner);
  this.plan = plan;

  if (plan.hasJoinQual()) {
    this.joinQual = plan.getJoinQual();
  }

  // for projection
  projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  needNewOuter = true;
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:18,代码来源:NLJoinExec.java

示例4: addJoin

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public Collection<EvalNode> addJoin(LogicalPlan plan, LogicalPlan.QueryBlock block,
                                    JoinNode joinNode) throws PlanningException {
  Set<EvalNode> cnf = Sets.newHashSet(AlgebraicUtil.toConjunctiveNormalFormArray(joinNode.getJoinQual()));
  Set<EvalNode> nonJoinQuals = Sets.newHashSet();
  for (EvalNode singleQual : cnf) {
    if (PlannerUtil.isJoinQual(singleQual)) {

      String [] relations = guessRelationsFromJoinQual(block, singleQual);
      String leftExprRelName = relations[0];
      String rightExprRelName = relations[1];

      Collection<String> leftLineage = PlannerUtil.getRelationLineageWithinQueryBlock(plan, joinNode.getLeftChild());

      boolean isLeftExprForLeftTable = leftLineage.contains(leftExprRelName);
      JoinEdge edge;
      edge = getEdge(leftExprRelName, rightExprRelName);

      if (edge != null) {
        edge.addJoinQual(singleQual);
      } else {
        if (isLeftExprForLeftTable) {
          edge = new JoinEdge(joinNode.getJoinType(),
              block.getRelation(leftExprRelName), block.getRelation(rightExprRelName), singleQual);
          addEdge(leftExprRelName, rightExprRelName, edge);
        } else {
          edge = new JoinEdge(joinNode.getJoinType(),
              block.getRelation(rightExprRelName), block.getRelation(leftExprRelName), singleQual);
          addEdge(rightExprRelName, leftExprRelName, edge);
        }
      }
    } else {
      nonJoinQuals.add(singleQual);
    }
  }
  cnf.retainAll(nonJoinQuals);
  return cnf;
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:38,代码来源:JoinGraph.java

示例5: MergeFullOuterJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public MergeFullOuterJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftChild,
                              PhysicalExec rightChild, SortSpec[] leftSortKey, SortSpec[] rightSortKey) {
  super(context, plan.getInSchema(), plan.getOutSchema(), leftChild, rightChild);
  Preconditions.checkArgument(plan.hasJoinQual(), "Sort-merge join is only used for the equi-join, " +
      "but there is no join condition");
  this.joinNode = plan;
  this.joinQual = plan.getJoinQual();

  this.leftTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  this.rightTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  SortSpec[][] sortSpecs = new SortSpec[2][];
  sortSpecs[0] = leftSortKey;
  sortSpecs[1] = rightSortKey;

  this.joincomparator = new JoinTupleComparator(leftChild.getSchema(),
      rightChild.getSchema(), sortSpecs);
  this.tupleComparator = PlannerUtil.getComparatorsFromJoinQual(
      plan.getJoinQual(), leftChild.getSchema(), rightChild.getSchema());

  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());

  leftNumCols = leftChild.getSchema().size();
  rightNumCols = rightChild.getSchema().size();
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:30,代码来源:MergeFullOuterJoinExec.java

示例6: RightOuterMergeJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public RightOuterMergeJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec outer,
                               PhysicalExec inner, SortSpec[] outerSortKey, SortSpec[] innerSortKey) {
  super(context, plan.getInSchema(), plan.getOutSchema(), outer, inner);
  Preconditions.checkArgument(plan.hasJoinQual(), "Sort-merge join is only used for the equi-join, " +
      "but there is no join condition");
  this.joinNode = plan;
  this.joinQual = plan.getJoinQual();

  this.leftTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  this.innerTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  SortSpec[][] sortSpecs = new SortSpec[2][];
  sortSpecs[0] = outerSortKey;
  sortSpecs[1] = innerSortKey;

  this.joinComparator = new JoinTupleComparator(outer.getSchema(), inner.getSchema(), sortSpecs);
  this.tupleComparator = PlannerUtil.getComparatorsFromJoinQual(
      plan.getJoinQual(), outer.getSchema(), inner.getSchema());

  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());

  leftNumCols = outer.getSchema().size();
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:28,代码来源:RightOuterMergeJoinExec.java

示例7: HashJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public HashJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftExec,
    PhysicalExec rightExec) {
  super(context, SchemaUtil.merge(leftExec.getSchema(), rightExec.getSchema()), plan.getOutSchema(),
      leftExec, rightExec);
  this.plan = plan;
  this.joinQual = plan.getJoinQual();
  this.tupleSlots = new HashMap<Tuple, List<Tuple>>(10000);

  this.joinKeyPairs = PlannerUtil.getJoinKeyPairs(joinQual,
      leftExec.getSchema(), rightExec.getSchema());

  leftKeyList = new int[joinKeyPairs.size()];
  rightKeyList = new int[joinKeyPairs.size()];

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    leftKeyList[i] = leftExec.getSchema().getColumnId(joinKeyPairs.get(i)[0].getQualifiedName());
  }

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    rightKeyList[i] = rightExec.getSchema().getColumnId(joinKeyPairs.get(i)[1].getQualifiedName());
  }

  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());
  leftKeyTuple = new VTuple(leftKeyList.length);
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:31,代码来源:HashJoinExec.java

示例8: HashLeftSemiJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public HashLeftSemiJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec fromSideChild,
                            PhysicalExec inSideChild) {
  super(context, plan, fromSideChild, inSideChild);
  // NUll Tuple
  rightNullTuple = new VTuple(leftChild.outColumnNum);
  for (int i = 0; i < leftChild.outColumnNum; i++) {
    rightNullTuple.put(i, NullDatum.get());
  }
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:10,代码来源:HashLeftSemiJoinExec.java

示例9: BNLJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public BNLJoinExec(final TaskAttemptContext context, final JoinNode plan,
                   final PhysicalExec leftExec, PhysicalExec rightExec) {
  super(context, plan.getInSchema(), plan.getOutSchema(), leftExec, rightExec);
  this.plan = plan;
  this.joinQual = plan.getJoinQual();
  if (joinQual != null) { // if join type is not 'cross join'
    hasJoinQual = true;
  } else {
    hasJoinQual = false;
  }
  this.leftTupleSlots = new ArrayList<Tuple>(TUPLE_SLOT_SIZE);
  this.rightTupleSlots = new ArrayList<Tuple>(TUPLE_SLOT_SIZE);
  this.leftIterator = leftTupleSlots.iterator();
  this.rightIterator = rightTupleSlots.iterator();
  this.rightEnd = false;
  this.leftEnd = false;

  // for projection
  if (!plan.hasTargets()) {
    plan.setTargets(PlannerUtil.schemaToTargets(outSchema));
  }

  projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outputTuple = new VTuple(outSchema.size());
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:29,代码来源:BNLJoinExec.java

示例10: HashLeftOuterJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public HashLeftOuterJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec leftChild,
                             PhysicalExec rightChild) {
  super(context, SchemaUtil.merge(leftChild.getSchema(), rightChild.getSchema()),
      plan.getOutSchema(), leftChild, rightChild);
  this.plan = plan;
  this.joinQual = plan.getJoinQual();
  this.tupleSlots = new HashMap<Tuple, List<Tuple>>(10000);

  this.joinKeyPairs = PlannerUtil.getJoinKeyPairs(joinQual, leftChild.getSchema(), rightChild.getSchema());

  leftKeyList = new int[joinKeyPairs.size()];
  rightKeyList = new int[joinKeyPairs.size()];

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    leftKeyList[i] = leftChild.getSchema().getColumnId(joinKeyPairs.get(i)[0].getQualifiedName());
  }

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    rightKeyList[i] = rightChild.getSchema().getColumnId(joinKeyPairs.get(i)[1].getQualifiedName());
  }

  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());
  leftKeyTuple = new VTuple(leftKeyList.length);

  rightNumCols = rightChild.getSchema().size();
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:32,代码来源:HashLeftOuterJoinExec.java

示例11: MergeJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public MergeJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec outer,
    PhysicalExec inner, SortSpec[] outerSortKey, SortSpec[] innerSortKey) {
  super(context, plan.getInSchema(), plan.getOutSchema(), outer, inner);
  Preconditions.checkArgument(plan.hasJoinQual(), "Sort-merge join is only used for the equi-join, " +
      "but there is no join condition");
  this.joinNode = plan;
  this.joinQual = plan.getJoinQual();

  this.outerTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  this.innerTupleSlots = new ArrayList<Tuple>(INITIAL_TUPLE_SLOT);
  SortSpec[][] sortSpecs = new SortSpec[2][];
  sortSpecs[0] = outerSortKey;
  sortSpecs[1] = innerSortKey;

  this.joincomparator = new JoinTupleComparator(outer.getSchema(),
      inner.getSchema(), sortSpecs);
  this.tupleComparator = PlannerUtil.getComparatorsFromJoinQual(
      plan.getJoinQual(), outer.getSchema(), inner.getSchema());
  this.outerIterator = outerTupleSlots.iterator();
  this.innerIterator = innerTupleSlots.iterator();
  
  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:29,代码来源:MergeJoinExec.java

示例12: HashFullOuterJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public HashFullOuterJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec outer,
                             PhysicalExec inner) {
  super(context, SchemaUtil.merge(outer.getSchema(), inner.getSchema()),
      plan.getOutSchema(), outer, inner);
  this.plan = plan;
  this.joinQual = plan.getJoinQual();
  this.tupleSlots = new HashMap<Tuple, List<Tuple>>(10000);

  // this hashmap mirrors the evolution of the tupleSlots, with the same keys. For each join key,
  // we have a boolean flag, initially false (whether this join key had at least one match on the left operand)
  this.matched = new HashMap<Tuple, Boolean>(10000);

  this.joinKeyPairs = PlannerUtil.getJoinKeyPairs(joinQual,
      outer.getSchema(), inner.getSchema());

  leftKeyList = new int[joinKeyPairs.size()];
  rightKeyList = new int[joinKeyPairs.size()];

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    leftKeyList[i] = outer.getSchema().getColumnId(joinKeyPairs.get(i)[0].getQualifiedName());
  }

  for (int i = 0; i < joinKeyPairs.size(); i++) {
    rightKeyList[i] = inner.getSchema().getColumnId(joinKeyPairs.get(i)[1].getQualifiedName());
  }

  // for projection
  this.projector = new Projector(inSchema, outSchema, plan.getTargets());

  // for join
  frameTuple = new FrameTuple();
  outTuple = new VTuple(outSchema.size());
  leftKeyTuple = new VTuple(leftKeyList.length);

  leftNumCols = outer.getSchema().size();
  rightNumCols = inner.getSchema().size();
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:38,代码来源:HashFullOuterJoinExec.java

示例13: HashLeftAntiJoinExec

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
public HashLeftAntiJoinExec(TaskAttemptContext context, JoinNode plan, PhysicalExec fromSideChild,
                            PhysicalExec notInSideChild) {
  super(context, plan, fromSideChild, notInSideChild);
  // NUll Tuple
  rightNullTuple = new VTuple(leftChild.outColumnNum);
  for (int i = 0; i < leftChild.outColumnNum; i++) {
    rightNullTuple.put(i, NullDatum.get());
  }
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:10,代码来源:HashLeftAntiJoinExec.java

示例14: testEquals

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
@Test
public void testEquals() {
  Schema schema = new Schema();
  schema.addColumn("id", Type.INT4);
  schema.addColumn("name", Type.TEXT);
  schema.addColumn("age", Type.INT2);
  GroupbyNode groupbyNode = new GroupbyNode(0);
  groupbyNode.setGroupingColumns(new Column[]{schema.getColumn(1), schema.getColumn(2)});
  ScanNode scanNode = new ScanNode(0);
  scanNode.init(CatalogUtil.newTableDesc("in", schema, CatalogUtil.newTableMeta(StoreType.CSV), new Path("in")));

  GroupbyNode groupbyNode2 = new GroupbyNode(0);
  groupbyNode2.setGroupingColumns(new Column[]{schema.getColumn(1), schema.getColumn(2)});
  JoinNode joinNode = new JoinNode(0);
  ScanNode scanNode2 = new ScanNode(0);
  scanNode2.init(CatalogUtil.newTableDesc("in2", schema, CatalogUtil.newTableMeta(StoreType.CSV), new Path("in2")));

  groupbyNode.setChild(scanNode);
  groupbyNode2.setChild(joinNode);
  joinNode.setLeftChild(scanNode);
  joinNode.setRightChild(scanNode2);

  assertTrue(groupbyNode.equals(groupbyNode2));
  assertFalse(groupbyNode.deepEquals(groupbyNode2));

  ScanNode scanNode3 = new ScanNode(0);
  scanNode3.init(CatalogUtil.newTableDesc("in", schema, CatalogUtil.newTableMeta(StoreType.CSV), new Path("in")));
  groupbyNode2.setChild(scanNode3);

  assertTrue(groupbyNode.equals(groupbyNode2));
  assertTrue(groupbyNode.deepEquals(groupbyNode2));
}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:33,代码来源:TestLogicalNode.java

示例15: testFullOuterHashJoinExec0

import org.apache.tajo.engine.planner.logical.JoinNode; //导入依赖的package包/类
@Test
public final void testFullOuterHashJoinExec0() throws IOException, PlanningException {
  Expr expr = analyzer.parse(QUERIES[0]);
  LogicalNode plan = planner.createPlan(expr).getRootBlock().getRoot();
  JoinNode joinNode = PlannerUtil.findTopNode(plan, NodeType.JOIN);
  Enforcer enforcer = new Enforcer();
  enforcer.enforceJoinAlgorithm(joinNode.getPID(), JoinAlgorithm.IN_MEMORY_HASH_JOIN);

  FileFragment[] dep3Frags = StorageManager.splitNG(conf, "dep3", dep3.getMeta(), dep3.getPath(), Integer.MAX_VALUE);
  FileFragment[] emp3Frags = StorageManager.splitNG(conf, "emp3", emp3.getMeta(), emp3.getPath(), Integer.MAX_VALUE);
  FileFragment[] merged = TUtil.concat(dep3Frags, emp3Frags);

  Path workDir = CommonTestingUtil.getTestDir("target/test-data/TestFullOuterHashJoinExec0");
  TaskAttemptContext ctx = new TaskAttemptContext(conf,
      LocalTajoTestingUtility.newQueryUnitAttemptId(), merged, workDir);
  ctx.setEnforcer(enforcer);

  PhysicalPlanner phyPlanner = new PhysicalPlannerImpl(conf, sm);
  PhysicalExec exec = phyPlanner.createPlan(ctx, plan);

  ProjectionExec proj = (ProjectionExec) exec;
  assertTrue(proj.getChild() instanceof HashFullOuterJoinExec);

  int count = 0;
  exec.init();

  while (exec.next() != null) {
    //TODO check contents
    count = count + 1;
  }
  assertNull(exec.next());
  exec.close();
  assertEquals(12, count);

}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:36,代码来源:TestFullOuterHashJoinExec.java


注:本文中的org.apache.tajo.engine.planner.logical.JoinNode类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。