请原谅我的无知,因为我是 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()
ortake()
或任何此类)时遇到以下异常。
我在这里阅读(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
在上述异常之后,它只是打印一些生成的代码并且作业失败。
任何信息都非常感谢。