我正在将数据加载到数据帧中,然后转换为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()
这种转换需要很多时间,并且也会进行随机播放。我该怎么做才能改善这一点?
更新:
在我的SQL查询中,我有一个过滤条件,我猜 触发随机播放(tungestonexchange)
。这是正确的行为吗?我已经删除了order by子句。
更新:
过滤器表达式将导致shuffle,从而导致不同的阶段。因此,它变成了内存密集型程序。