[英]Spark join/groupby datasets take a lot time
我有2行35kk +行的数据集(表)。
我尝试通过一些ID 加入 (或分组 )该数据集。 (通常是一对一的)
但是此操作需要很多时间: 25+ h 。
过滤器只能正常工作: 〜20分钟 。
环境 :emr-5.3.1
Hadoop发行版 :Amazon
应用程序 :Ganglia 3.7.2,Spark 2.1.0,Zeppelin 0.6.2
实例类型: m3.xlarge
代码( groupBy ):
Dataset<Row> dataset = ...
...
.groupBy("id")
.agg(functions.min("date"))
.withColumnRenamed("min(date)", "minDate")
代码( join ):
...
.join(dataset2, dataset.col("id").equalTo(dataset2.col("id")))
我也在EMR日志中找到此消息:
HashAggregateExec: spark.sql.codegen.aggregate.map.twolevel.enable is set to true, but current version of codegened fast hashmap does not support this aggregate.
数据可能会歪斜。 我们面对这个。 检查您的加入专栏。 大多数情况是在您的联接列为NULL时发生的
使用以下命令检查数据存储模式:
select joining_column, count(joining_col) from <tablename>
group by joining_col
这将使您了解联接列中的数据是否均匀分布
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.