2017-03-06 64 views
2

我的问题是,在使用Spark SQL将表格非规范化为更大的表格时,我得到的任务大小过大。如何避免“任务大小过大”?

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

使用Spark SQL时,我的任务大小高达推荐大小的10倍。

这里的情况:

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

额外的信息:

  • 我已经试过移动源表到不同的类别和功能嵌入他们和任务大小没有改变。

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

+0

你可以在问题中包含警告吗?你能显示导致警告的代码吗? –

回答

-1

火花,你可以选择caching (persistence) level一些大的内存中对象卸载到磁盘,并使用unpersist()选择哪一个已缓存的结果扔掉。

+0

请充实一下你的回答,例如解释如何选择缓存级别以避免大量内存使用,以及如何使用'unpersist()'来释放内存。 – ktdrv

相关问题