Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在Hive/Spark中高效查找bigdata表的所有相关子范围_Apache Spark_Hive_Range_Bigdata - Fatal编程技术网

Apache spark 在Hive/Spark中高效查找bigdata表的所有相关子范围

Apache spark 在Hive/Spark中高效查找bigdata表的所有相关子范围,apache-spark,hive,range,bigdata,Apache Spark,Hive,Range,Bigdata,下面我想问一个问题。 我有两张桌子: 第一个表-MajorRange row | From | To | Group .... -----|--------|---------|--------- 1 | 1200 | 1500 | A 2 | 2200 | 2700 | B 3 | 1700 | 1900 | C 4 | 2100 | 2150 | D ... row | From | To |

下面我想问一个问题。 我有两张桌子: 第一个表-
MajorRange

row  | From   |  To     | Group ....
-----|--------|---------|---------
1    | 1200   |   1500  | A
2    | 2200   |   2700  | B
3    | 1700   |   1900  | C
4    | 2100   |   2150  | D
...
row  | From   |  To     | Group ....
-----|--------|---------|---------
1    | 1208   |   1300  | E
2    | 1400   |   1600  | F
3    | 1700   |   2100  | G
4    | 2100   |   2500  | H
... 
第二个表-
子范围

row  | From   |  To     | Group ....
-----|--------|---------|---------
1    | 1200   |   1500  | A
2    | 2200   |   2700  | B
3    | 1700   |   1900  | C
4    | 2100   |   2150  | D
...
row  | From   |  To     | Group ....
-----|--------|---------|---------
1    | 1208   |   1300  | E
2    | 1400   |   1600  | F
3    | 1700   |   2100  | G
4    | 2100   |   2500  | H
... 
输出表应该是与
主范围
组重叠的所有
子范围
组的列表。在以下示例中,结果表为:

 row | Major  |  Sub | 
-----|--------|------|-
1    | A      |   E  | 
2    | A      |   F  |
3    | B      |   H  |
4    | C      |   G  |
5    | D      |   H  |
如果两个范围之间没有重叠,
Major
将不会出现。
这两个表都是大数据表。如何以最有效的方式使用Hive/Spark进行此操作?

使用
Spark
,可能是这样的非等联接

val join_expr = major_range("From") < sub_range("To") && major_range("To") > sub_range("From")

(major_range.join(sub_range, join_expr)
 .select(
    monotonically_increasing_id().as("row"), 
    major_range("Group").as("Major"), 
    sub_range("Group").as("Sub")
  )
).show

+---+-----+---+
|row|Major|Sub|
+---+-----+---+
|  0|    A|  E|
|  1|    A|  F|
|  2|    B|  H|
|  3|    C|  G|
|  4|    D|  H|
+---+-----+---+
val join\u expr=major\u range(“From”)
谢谢,以防没有行和列。我需要在你的代码中更改什么?你不需要更改代码。此处不使用
列。我创建了一个新的
列以满足您的输出。