You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Submit作业报错:'numpy.dtype'对象无'_get_object_id'属性

问题解决:spark-submit中numpy.dtype无_get_object_id属性的AttributeError

问题描述

运行spark-submit作业时触发以下错误:

AttributeError: 'numpy.dtype' object has no attribute '_get_object_id'

错误发生在spark.createDataFrame(panda_df, schema=myschema)这一行。本地以独立脚本运行代码无异常,仅spark-submit提交作业时出现报错。

相关代码

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)

数据验证

打印的panda_df内容及数据类型均符合预期:

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

问题根因

经排查,错误由代码中未显式包含的logger配置导致。这类隐式的logger初始化会在Spark分布式环境中干扰numpy数据类型的序列化/反序列化流程,进而触发_get_object_id属性缺失的错误。

解决方法

确保代码中显式管理logger的初始化,避免隐式配置影响Spark作业运行:

  • 若使用logging模块,显式调用logging.basicConfig(),或配置logger时按需指定disable_existing_loggers=False
  • 移除或重构可能隐式初始化logger的第三方依赖或代码片段
  • 在Spark作业入口处显式初始化logger,保证分布式节点上的logger配置一致

内容的提问来源于stack exchange,提问作者bulbasarous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:05:27