【发布时间】: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