3
試圖創建基於這樣如何根據條件添加新列(不面臨JaninoRuntimeException或OutOfMemoryError)?
df
.withColumn("name1", someCondition1)
.withColumn("name2", someCondition2)
.withColumn("name3", someCondition3)
.withColumn("name4", someCondition4)
.withColumn("name5", someCondition5)
.withColumn("name6", someCondition6)
.withColumn("name7", someCondition7)
我面對下面的異常的情況下,超過6個.withColumn
子句加入
org.codehaus.janino.JaninoRuntimeException: Code of method "()V" of class "org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator" grows beyond 64 KB
此問題的條件與多個附加列火花數據幀在其他地方也有報道
- Spark ML Pipeline Causes java.lang.Exception: failed to compile ... Code ... grows beyond 64 KB
- https://github.com/rstudio/sparklyr/issues/264
是否有火花的屬性在那裏我可以配置的大小?
編輯
如果創建了更多列,例如,大約20我也不再收到上述異常,但5分鐘後等待而得到以下錯誤:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我要表演的是拼寫/糾錯。一些簡單的案例可以通過UDF中的地圖&替換輕鬆處理。儘管如此,仍然存在多個鏈接條件的其他情況。
我也將跟進有:https://issues.apache.org/jira/browse/SPARK-18532
一個最小的可重複的例子可以在這裏https://gist.github.com/geoHeil/86e5401fc57351c70fd49047c88cea05