Hadoop 配置单元ip地理编码(交叉连接半大表)
我的问题 我有500000个不同的IP地址需要进行地理编码。地理代码查找表有一个ip from和ip to范围,我必须与之进行比较,一个180万行的表 所以基本上是:Hadoop 配置单元ip地理编码(交叉连接半大表),hadoop,hive,ip-geolocation,Hadoop,Hive,Ip Geolocation,我的问题 我有500000个不同的IP地址需要进行地理编码。地理代码查找表有一个ip from和ip to范围,我必须与之进行比较,一个180万行的表 所以基本上是: select * /*+ MAPJOIN(a) */ from ip_address a cross join ip_lookup b where a.AddressInt >= b.ip_from and a.AddressInt <= b.ip_to; 问题: 1) 有人有比交叉连接更好的想法吗?我不介意再举几
select *
/*+ MAPJOIN(a) */
from ip_address a
cross join ip_lookup b
where a.AddressInt >= b.ip_from and a.AddressInt <= b.ip_to;
问题:
1) 有人有比交叉连接更好的想法吗?我不介意再举几个(几十个)例子,但我怀疑这是否会有帮助
2) 我真的像在内存中存储ip_地址那样进行交叉映射连接吗
提前谢谢。我去年遇到了你的(某种)问题
因为我的地理编码表安装在RAM中,所以我做了以下工作:
GeoCoder
),它将地理编码信息从光盘读取到RAM和
在内存中进行地理编码geocode.info
添加到分布式缓存中(Hiveaddfile
命令执行此操作)evaluate
方法中编写了UDF
,它创建(或者如果已经创建)了GeoCoder
实例。HiveUDF
可以通过getClass().getClassLoader().getResource(“geocode.info”).getFile()
geocode.info
(现在它是一个普通文件)的本地路径,其余的是一个历史记录Stage-5: number of mappers: 1; number of reducers: 0