我正在使用SparkSQL将一个小表加入Spark中的一个大表。 我遇到的问题是,我的本地磁盘正被填充中途的shuffle写入填充。
我是否可以使用Spark设置将shuffle数据溢出到本地磁盘而不是我们的hdfs存储(大型Isilon群集)?
是否有其他方法可以在输出大于我的组合本地磁盘存储的情况下进行连接?
我已确保两个输入表都已分区,并且输出表已分区。
我不关心查询的性能,我只是想让它完成而不会崩溃。
我正在运行Spark 1.5.1。我也愿意尝试使用配置单元,但我的经验告诉我,这会更快崩溃。
有关群集的详细信息,您还可以看到this question。
答案 0 :(得分:0)
我认为您可以将结果存储在hdfs中,但不能将数据计算存储到hdfs中。因为计算必须在内存或磁盘上进行。
答案 1 :(得分:0)
如果您的本地磁盘不够,请找到一个免费的卷并设置'spark.local.dir'
,预计该距离会更接近以获得更好的性能。
答案 2 :(得分:-1)
不,这是一个本地目录,其中HDFS是一个共享文件系统。
您可以通过调整Spark执行数据分区的方式来减少随机数据(这取决于您的输入和处理)。