【问题标题】:Grows beyond 64 KB Error when using "When Otherwise"使用“否则”时出现超过 64 KB 错误
【发布时间】:2020-11-15 12:12:09
【问题描述】:

当我在 Scala 中运行这个 Spark 代码时:

df.withColumn(x, when(col(x).isin(values:_*),col(x)).otherwise(lit(null).cast(StringType)))

我遇到了这个错误:

     java.lang.RuntimeException: Compiling "GeneratedClass": Code of method
 "apply(Lorg/apache/spark/sql/catalyst/InternalRow;)Lorg/apache/spark/sql
 /catalyst /expressions/UnsafeRow;" of class
 "org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection"
 grows beyond 64 KB
        at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:361)
        at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:234)

df:Spark 数据集

x:StringType 列,每一行类似于“US,Washington,Seattle”

值:数组[字符串]

【问题讨论】:

标签: scala apache-spark compiler-errors apache-spark-sql


【解决方案1】:

这是一个与字节码增长相关的已知问题。常见的解决方案是添加检查点,即保存数据帧并再次读取。

详情请参阅以下内容:Apache Spark Codegen Stage grows beyond 64 KB

【讨论】:

  • 我知道这个问题,我想知道我的代码是否有任何替代方案(即何时,否则)不会导致此错误。
  • 好吧,正如 Lamanus 指出的那样,缓存你的数据帧应该可以防止错误。
猜你喜欢
  • 2017-08-30
  • 2017-04-27
  • 2018-11-26
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多