【发布时间】:2019-05-05 06:23:07
【问题描述】:
请原谅我的无知,因为我是 pyspark 和 Spark 的新手。 我正在努力将 Spark 从 1.6.3 升级到 2.1,并且在使用 pyspark 运行我们的模型时遇到了问题。
在运行抛出错误的 python 脚本时,我们所做的只是读取 JSON 并使用如下所示的方法将其转换为 DF
df_read = sparkSession.read.json('path to json file')
在阅读后,我们在 DF 上执行一些操作,在列上运行一些 UDF,然后最终想要写回 JSON,然后将其拾取并写入 Apache Phoenix 表。
我们在尝试对 DF 执行任何终端操作时遇到以下异常,例如 show() 或 take() 或任何此类。
我在这里读到 (https://issues.apache.org/jira/browse/SPARK-18016?focusedCommentId=16348980&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16348980),问题是 spark 无法处理超宽列,此问题已在 2.3 版中修复。
我们想要编写的 DF 中有大约 450 列。
我的问题是,由于我们目前无法升级到 Spark 2.3,有没有办法解决这个问题?可以拆分 2 个 DF 中的列,然后将它们合并并写入或类似的东西?
18/12/03 12:34:30 WARN TaskSetManager: Lost task 0.0 in stage 1.0 (TID 1, xhadoopm686p.aetna.com, executor 1): java.util.concurrent.ExecutionException: java.lang.Exception: failed to compile: org.codehaus.janino.JaninoRuntimeException: Constant pool for class org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificUnsafeProjection has grown past JVM limit of 0xFFFF
在上述异常之后,它只是打印一些生成的代码并且作业失败。
非常感谢任何信息。
【问题讨论】:
-
看起来它是为 2.1 向后移植的,也许你可以用那些新的 jar 来修补你的实例?
-
它最初是向后移植的,但后来又恢复了,因为我相信他们无法进行任何回归测试。
标签: apache-spark pyspark janino