Spark SQL如下:
INSERT INTO new
SELECT
~~~
FROM A, B
WHERE
~~~ (complex join)
A和new的Schema是相同的,B有一些过滤模式。B的大小较小,被广播。
但是在我的本地测试中显示OOM错误。
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at org.apache.spark.sql.catalyst.expressions.UnsafeRow.copy(UnsafeRow.java:535)
at org.apache.spark.sql.catalyst.expressions.UnsafeRow.copy(UnsafeRow.java:93)
我尝试重新分区,并更改一些配置(如spark.shuffle.memoryFraction),但它没有工作。
我使用Spark 1.6。
一个选择是,尝试增加执行器内存
--executor-memory 4096m
你也可以尝试调优"spark.memory.fraction"one_answers"spark.memory.fraction"。中给出的storageFractionhttp://spark.apache.org/docs/1.6.2/tuning.html memory-management-overview