我开始在使用此“身份”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(使用前将#替换为@)