PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/release-0.0.0-rc0/hive/external/ql/src/java/org/apache/hadoop/hive/ql/plan/MapJoinDesc.java

#
Java | 206 lines | 121 code | 30 blank | 55 comment | 2 complexity | c9710be9dbd2e7f02557fa7206b77dc3 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, JSON, CPL-1.0
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package org.apache.hadoop.hive.ql.plan;
  19. import java.io.Serializable;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.Iterator;
  23. import java.util.LinkedHashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Set;
  27. import java.util.Map.Entry;
  28. /**
  29. * Map Join operator Descriptor implementation.
  30. *
  31. */
  32. @Explain(displayName = "Map Join Operator")
  33. public class MapJoinDesc extends JoinDesc implements Serializable {
  34. private static final long serialVersionUID = 1L;
  35. private Map<Byte, List<ExprNodeDesc>> keys;
  36. private TableDesc keyTblDesc;
  37. private List<TableDesc> valueTblDescs;
  38. private List<TableDesc> valueFilteredTblDescs;
  39. private int posBigTable;
  40. private Map<Byte, List<Integer>> retainList;
  41. private transient String bigTableAlias;
  42. private LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> aliasBucketFileNameMapping;
  43. private LinkedHashMap<String, Integer> bucketFileNameMapping;
  44. public MapJoinDesc() {
  45. bucketFileNameMapping = new LinkedHashMap<String, Integer>();
  46. }
  47. public MapJoinDesc(MapJoinDesc clone) {
  48. super(clone);
  49. this.keys = clone.keys;
  50. this.keyTblDesc = clone.keyTblDesc;
  51. this.valueTblDescs = clone.valueTblDescs;
  52. this.posBigTable = clone.posBigTable;
  53. this.retainList = clone.retainList;
  54. this.bigTableAlias = clone.bigTableAlias;
  55. this.aliasBucketFileNameMapping = clone.aliasBucketFileNameMapping;
  56. this.bucketFileNameMapping = clone.bucketFileNameMapping;
  57. }
  58. public MapJoinDesc(final Map<Byte, List<ExprNodeDesc>> keys,
  59. final TableDesc keyTblDesc, final Map<Byte, List<ExprNodeDesc>> values,
  60. final List<TableDesc> valueTblDescs,final List<TableDesc> valueFilteredTblDescs, List<String> outputColumnNames,
  61. final int posBigTable, final JoinCondDesc[] conds,
  62. final Map<Byte, List<ExprNodeDesc>> filters, boolean noOuterJoin) {
  63. super(values, outputColumnNames, noOuterJoin, conds, filters);
  64. this.keys = keys;
  65. this.keyTblDesc = keyTblDesc;
  66. this.valueTblDescs = valueTblDescs;
  67. this.valueFilteredTblDescs = valueFilteredTblDescs;
  68. this.posBigTable = posBigTable;
  69. this.bucketFileNameMapping = new LinkedHashMap<String, Integer>();
  70. initRetainExprList();
  71. }
  72. private void initRetainExprList() {
  73. retainList = new HashMap<Byte, List<Integer>>();
  74. Set<Entry<Byte, List<ExprNodeDesc>>> set = super.getExprs().entrySet();
  75. Iterator<Entry<Byte, List<ExprNodeDesc>>> setIter = set.iterator();
  76. while (setIter.hasNext()) {
  77. Entry<Byte, List<ExprNodeDesc>> current = setIter.next();
  78. List<Integer> list = new ArrayList<Integer>();
  79. for (int i = 0; i < current.getValue().size(); i++) {
  80. list.add(i);
  81. }
  82. retainList.put(current.getKey(), list);
  83. }
  84. }
  85. public Map<Byte, List<Integer>> getRetainList() {
  86. return retainList;
  87. }
  88. public void setRetainList(Map<Byte, List<Integer>> retainList) {
  89. this.retainList = retainList;
  90. }
  91. /**
  92. * @return the keys
  93. */
  94. @Explain(displayName = "keys")
  95. public Map<Byte, List<ExprNodeDesc>> getKeys() {
  96. return keys;
  97. }
  98. /**
  99. * @param keys
  100. * the keys to set
  101. */
  102. public void setKeys(Map<Byte, List<ExprNodeDesc>> keys) {
  103. this.keys = keys;
  104. }
  105. /**
  106. * @return the position of the big table not in memory
  107. */
  108. @Explain(displayName = "Position of Big Table")
  109. public int getPosBigTable() {
  110. return posBigTable;
  111. }
  112. /**
  113. * @param posBigTable
  114. * the position of the big table not in memory
  115. */
  116. public void setPosBigTable(int posBigTable) {
  117. this.posBigTable = posBigTable;
  118. }
  119. /**
  120. * @return the keyTblDesc
  121. */
  122. public TableDesc getKeyTblDesc() {
  123. return keyTblDesc;
  124. }
  125. /**
  126. * @param keyTblDesc
  127. * the keyTblDesc to set
  128. */
  129. public void setKeyTblDesc(TableDesc keyTblDesc) {
  130. this.keyTblDesc = keyTblDesc;
  131. }
  132. public List<TableDesc> getValueFilteredTblDescs() {
  133. return valueFilteredTblDescs;
  134. }
  135. public void setValueFilteredTblDescs(List<TableDesc> valueFilteredTblDescs) {
  136. this.valueFilteredTblDescs = valueFilteredTblDescs;
  137. }
  138. /**
  139. * @return the valueTblDescs
  140. */
  141. public List<TableDesc> getValueTblDescs() {
  142. return valueTblDescs;
  143. }
  144. /**
  145. * @param valueTblDescs
  146. * the valueTblDescs to set
  147. */
  148. public void setValueTblDescs(List<TableDesc> valueTblDescs) {
  149. this.valueTblDescs = valueTblDescs;
  150. }
  151. /**
  152. * @return bigTableAlias
  153. */
  154. public String getBigTableAlias() {
  155. return bigTableAlias;
  156. }
  157. /**
  158. * @param bigTableAlias
  159. */
  160. public void setBigTableAlias(String bigTableAlias) {
  161. this.bigTableAlias = bigTableAlias;
  162. }
  163. public LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> getAliasBucketFileNameMapping() {
  164. return aliasBucketFileNameMapping;
  165. }
  166. public void setAliasBucketFileNameMapping(
  167. LinkedHashMap<String, LinkedHashMap<String, ArrayList<String>>> aliasBucketFileNameMapping) {
  168. this.aliasBucketFileNameMapping = aliasBucketFileNameMapping;
  169. }
  170. public LinkedHashMap<String, Integer> getBucketFileNameMapping() {
  171. return bucketFileNameMapping;
  172. }
  173. public void setBucketFileNameMapping(LinkedHashMap<String, Integer> bucketFileNameMapping) {
  174. this.bucketFileNameMapping = bucketFileNameMapping;
  175. }
  176. }