pyspark 属性错误:“numpy.dtype”对象没有属性“_get_object_id”

np8igboo  于 2023-05-16  发布在  Spark
关注(0)|答案(1)|浏览(140)

我正在运行这个sparksubmit作业,但收到AttributeError:numpy.dtype对象没有属性_get_object_id

mycursor.execute(
            "SELECT a, b, c, d, e"
            "FROM {} ".format(mysql_schema))
panda_df = DataFrame(mycursor.fetchall())

myschema = StructType(
    [

        StructField('a', StringType(), True),
        StructField('b', StringType(), True),
        StructField('c', StringType(), True),
        StructField('d', StringType(), True),
        StructField('e', StringType(), True),

    ])

spark_df = spark.createDataFrame(panda_df, schema=myschema)

创建数据框时,最后一行出现错误。
我试着打印值,这些就是我得到的

print(panda_df.to_string())

    a   b  c   d  e
0  38  38  N   2  Y
1  49  49  N   3  Y
2  64  64  N   5  Y
3  26  26  N  11  Y
4  36  36  N  12  Y


print(panda_df.dtypes)
a    object
b    object
c    object
d    object
e    object
dtype: object

我在MacOS M1上使用pyspark版本3.1.1和numpy版本1.19.5以及pandas版本1.1.5。
上面的代码在作为独立脚本运行时没有错误,但是当作为spark-submit作业的一部分运行时,会出现错误。任何想法是什么问题的原因或如何修复AttributeError?
编辑:原来这个错误是由一个我没有包含在上面代码中的记录器引起的

eiee3dmh

eiee3dmh1#

表中的值并不都是您在模式中指定的字符串。尝试在创建模式之前将pandas_df转换为字符串。

panda_df = panda_df.astype(str)

相关问题