问题描述
我有2个大数据帧。每行都有经/纬度数据。我的目标是在2个数据框之间进行联接,并找到距离内的所有点,例如100m。
df1: (id,lat,lon,geohash7)
df2: (id,geohash7)
我想在geohash7上对df1和df2进行分区,然后仅在分区内加入。我想避免分区之间的连接以减少计算量。
df1 = df1.repartition(200,"geohash7")
df2 = df2.repartition(200,"geohash7")
df_merged = df1.join(df2,(df1("geohash7")===df2("geohash7")) & (dist(df1("lat"),df1("lon"),df2("lat"),df2("lon"))<100) )
因此,基本上加入geohash7,然后确保点之间的距离小于100。 问题在于,Spark实际上将交叉连接所有数据。我如何才能使其仅执行分区间连接而不是分区内连接?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)