熊猫udf showString错误的简单示例

时间:2020-09-08 20:01:15

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

我开始使用此“身份” 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(),所以这让我认为事情在从熊猫到pyspark数据框的转换中正在“刹车”。

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

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

1 个答案:

答案 0 :(得分:1)

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

  sc.install_pypi_package("pyarrow==0.14.1") 

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