Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/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
Sql 如何在配置单元中使用中间连接实现连接?_Sql_Hadoop_Hive - Fatal编程技术网

Sql 如何在配置单元中使用中间连接实现连接?

Sql 如何在配置单元中使用中间连接实现连接?,sql,hadoop,hive,Sql,Hadoop,Hive,我有一个配置单元表,其中包含IP地址的数字版本。我有另一个带有start、end、location的表,其中start和end定义了一系列与某个位置关联的数字IP Example Numeric: 29 start | end | location ---------------------- 1 | 11 | 666 12 | 30 | 777 31 | 40 | 888 Output: 29 - 777 我需要使用表1中的IP来查找表2中的位置。我是Hive的

我有一个配置单元表,其中包含IP地址的数字版本。我有另一个带有start、end、location的表,其中start和end定义了一系列与某个位置关联的数字IP

Example
Numeric: 29

start | end | location
----------------------
1     | 11  | 666
12    | 30  | 777
31    | 40  | 888

Output: 29 - 777
我需要使用表1中的IP来查找表2中的位置。我是Hive的新手,发现我不能在join语句中使用BETHEN或<>。我一直在尝试使用配置单元SQL来找到实现这一点的方法,但没有找到。有办法吗?如果需要的话,我对UDF也有点熟悉。我愿意接受这样的想法,即这在Hive中是不可能的,我需要使用Pig或Java Map/Reduce作业,我只是在这一点上还不太了解


感谢您的帮助谢谢。

蜂巢和猪不支持这种不平等加入。您可以使用交叉连接以及在何处进行交叉连接。但这是低效的。一个简单的例子:

SELECT t1.ip, t2.location_ip FROM t1 JOIN t2
WHERE t1.ip >= t2.start_ip and t1.ip<=t2.start_ip ;
从t1连接t2选择t1.ip、t2.location\u ip
其中t1.ip>=t2.start\u ip和t1.ip=t2.start\u ip和t1.ip
SELECT /*+ MAPJOIN(t2) */ t1.ip, t2.location_ip FROM t1 JOIN t2
WHERE t1.ip >= t2.start_ip and t1.ip<=t2.start_ip ;