emr上的pandas udf错误:class“io.netty.buffer.arrowbuf”

sg3maiej  于 2021-05-16  发布在  Spark
关注(0)|答案(0)|浏览(308)

我试着在aws emr上使用jupyter笔记本上的Pandas自定义项,但没有用。首先,我试着使用一个函数,但我不能让它工作,所以我尝试了一些例子来回答我在这里找到的其他问题,但我仍然不能让它工作。我试过这个代码:

from pyspark.sql.functions import pandas_udf, PandasUDFType
from pyspark.sql.types import *
import pyspark.sql.functions as F
import pyarrow

df = spark.createDataFrame([
    (1, "A", "X1"),
    (2, "B", "X2"),
    (3, "B", "X3"),
    (1, "B", "X3"),
    (2, "C", "X2"),
    (3, "C", "X2"),
    (1, "C", "X1"),
    (1, "B", "X1"),
], ["id", "type", "code"])

schema = StructType([
    StructField("code", StringType()),
])

@F.pandas_udf(schema, F.PandasUDFType.GROUPED_MAP)
def dummy_udaf(pdf):
    pdf = pdf[['code']]
    return pdf

df.groupBy('type').apply(dummy_udaf).show()

我得到一个错误:

Caused by: java.lang.SecurityException: class "io.netty.buffer.ArrowBuf"'s signer information does not match signer information of other classes in the same package

我尝试不导入pyarrow,但得到了相同的错误。我还使用了其他关于这个主题的答案代码,结果是一样的。
在引导shell脚本中,我有一个pip安装行,如下所示:

sudo python3 -m pip install pandas==0.24.2 pyarrow==0.14.1

我尝试过pyarrow 0.15.1,但没有任何改变。你知道是什么导致了这个错误吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题