【问题标题】:pandas udf showString error on simplistic example简单示例上的 pandas udf showString 错误
【发布时间】:2020-12-27 05:55:39
【问题描述】:

我开始使用此“身份”pandas udf 在 EMR 集群上运行的 Pyspark Jupyter 笔记本上使用 pandas udf,但出现以下错误:

@pandas_udf(df.schema, PandasUDFType.GROUPED_MAP)
# Input/output are both a pandas.DataFrame
def pudf(pdf):

    return pdf

df.filter(df.corp_cust=='LO').groupby('corp_cust').apply(pudf).show()

调用 o388.showString 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止:阶段 113.0 中的任务 0 失败 4 次,最近一次失败:阶段 113.0 中丢失任务 0.3(TID 1666,ip-10-23-226-64.us .scottsco.com,执行者 1):java.lang.IllegalArgumentException 在 java.nio.ByteBuffer.allocate(ByteBuffer.java:334) 在 org.apache.arrow.vector.ipc.message.MessageSerializer.readMessage(MessageSerializer.java:543) 在 org.apache.arrow.vector.ipc.message.MessageChannelReader.readNext(MessageChannelReader.java:58) 在 org.apache.arrow.vector.ipc.ArrowStreamReader.readSchema(ArrowStreamReader.java:132)

我可以成功运行df.filter(df.corp_cust=='LO').show(),所以这让我觉得在从 pandas 到 pyspark 数据帧的转换过程中,事情正在“刹车”。

这个数据框有几个 StringType 和 DecimalType 列。我还尝试在 udf 中将字符串列编码为“utf-8”并得到相同的错误。

关于如何解决此问题的任何建议?

【问题讨论】:

    标签: pyspark jupyter user-defined-functions amazon-emr


    【解决方案1】:

    这显然是 pyarrow 0.15 版的问题[1],导致 pandads udf 出错。您可以尝试通过安装 Pyarrow 0.14.1 或更低版本来更改版本。

      sc.install_pypi_package("pyarrow==0.14.1") 
    

    [1]https://issues.apache.org/jira/browse/SPARK-29367

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多