pandas udf showString 简单示例错误

2024-01-01

我开始在使用此“身份”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”并得到相同的错误。

关于如何解决这个问题有什么建议吗?


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

  sc.install_pypi_package("pyarrow==0.14.1") 

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas udf showString 简单示例错误 的相关文章

随机推荐