如何避免"任务规模太大"?

时间:2017-03-06 02:31:33

标签: apache-spark apache-spark-sql

我的问题是,在使用Spark SQL将表反规范化为更大的表时,我发现任务大小过大的警告。

在人们指出使用广播或避免关闭整个班级的其他答案之前;让我说我已经读过这些,并且在使用Spark SQL时仍然特别困惑。

使用Spark SQL时,我的任务大小最多可达建议大小的10倍。

以下情况:

  • 我有10多个表/数据帧加入到超级表中。
  • 我创建了一个scala对象,并在正文中填充了这些10个表格。
  • 我在其他对象中导入该对象的成员(只是表格),其中计算形成了超级表。
  • 当Spark-SQL在这10个表运行之间连接,比如将结果表写入镶木地板文件时,我会收到任务大小警告。

额外信息:

  • 我尝试将源表移动到不同的类中并将它们嵌入到函数中,任务大小没有改变。

  • 我不确定广播如何帮助解决这个问题,因为使用Spark-CSV将源数据直接读入数据帧,因此应该已经分发。

1 个答案:

答案 0 :(得分:-1)

在Spark中,您可以选择caching (persistence) level将一些大型内存中对象卸载到磁盘,然后使用unpersist()选择要丢弃的已缓存结果。