Apache spark 如何根据条件添加新列(而不面临JaninRuntimeException或OutOfMemoryError)?
尝试基于以下条件创建具有多个附加列的spark数据框Apache spark 如何根据条件添加新列(而不面临JaninRuntimeException或OutOfMemoryError)?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,尝试基于以下条件创建具有多个附加列的spark数据框 df .withColumn("name1", someCondition1) .withColumn("name2", someCondition2) .withColumn("name3", someCondition3) .withColumn("name4", someCondition4) .withColumn("name5", someCondition5) .withColumn
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
其他地方也报告了该问题,例如:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我要执行的是拼写/错误更正。一些简单的案例可以通过自定义项框架中的映射和替换轻松处理。尽管如此,仍然存在其他几种具有多个链接条件的情况
我亦会跟进:
在这里可以找到一个最小的可重复性示例此错误是由整个tagecodegen和JVM问题引起的 快速回答:不,你不能改变限制。请看这个问题,64KB是JVM中的最大方法大小 我们必须等待Spark中的解决方案,目前系统参数中没有可以更改的内容