spark如何只在分区内连接

lztngnrs  于 2021-05-24  发布在  Spark
关注(0)|答案(0)|浏览(264)

我有两个大Dataframe。每行都有纬度/经度数据。我的目标是在两个Dataframe之间进行连接,并找到距离内的所有点,例如100米。

df1: (id, lat, lon, geohash7)
df2: (id, lat, lon, 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实际上会交叉连接所有数据。如何使它只进行分区间连接而不进行分区内连接?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题