使用Spark-SQL中的过滤器进行查询,形成随机边界

时间:2017-01-04 13:34:10

标签: apache-spark spark-dataframe rdd

我正在将数据加载到数据帧中,然后转换为RDD以执行某些rdd操作。我正在加载1700万条记录,执行程序内存为3GB,执行程序和执行程序核心数为2。

DataFrame df = hiveContext.sql("select * from table");
RDD<Row> rddTest = df.rdd();

//explained the flow in a simple way
rddTest.keyBy().cogroup().flatmap().createDataframe().saveAsTable()

这种转换需要很多时间,并且也会进行随机播放。我该怎么做才能改善这一点?

更新: rdd forms a different stage boundary

rdd() does a shuffle operation

更新2:rdd()创建2个阶段 rdd() First Stage

rdd() Second Stage

更新:

  

在我的SQL查询中,我有一个过滤条件,我猜   触发随机播放(tungestonexchange)

。这是正确的行为吗?我已经删除了order by子句。

更新:

过滤器表达式将导致shuffle,从而导致不同的阶段。因此,它变成了内存密集型程序。

0 个答案:

没有答案