相关疑难解决方法(0)

Spark SQL性能 - 在BETWEEN最小值和最大值之间加入值

我有两个存储的文件:

  1. IP范围 - 国家/地区查询
  2. 来自不同IP的请求列表

IP存储为整数(使用inet_aton()).

我尝试通过将两个文件加载到数据框并将它们注册为临时表来使用Spark SQL来连接这些数据.

GeoLocTable - ipstart, ipend, ...additional Geo location data
Recordstable - INET_ATON, ...3 more fields
Run Code Online (Sandbox Code Playgroud)

我尝试使用Spark SQL来使用像这样的SQL语句来连接这些数据 -

"select a.*, b.* from Recordstable a left join GeoLocTable b on a.INET_ATON between b.ipstart and b.ipend"
Run Code Online (Sandbox Code Playgroud)

RecordsTable中有大约850K记录,GeoLocTable中有大约250M记录.存在的连接大约有20个执行器运行大约2个小时.

我尝试过缓存和播放GeoLocTable,但它似乎并没有帮助.我已经碰到了spark.sql.autoBroadcastJoinThreshold = 300000000和spark.sql.shuffle.partitions = 600.

Spark UI显示正在执行的BroadcastNestedLoopJoin.这是我应该期待的最好的吗?我尝试搜索将执行此类连接的条件,但文档似乎很少.

PS - 我正在使用PySpark与Spark合作.

python apache-spark apache-spark-sql pyspark

4
推荐指数
1
解决办法
2301
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

pyspark ×1

python ×1