PySpark熊猫UDF:'NoneType'对象没有属性'_jvm'错误

时间:2020-10-21 16:17:34

标签: python pandas apache-spark pyspark apache-spark-sql

在Dataproc上运行PySpark(Spark版本2.4.6)作业,其文件结构概述如下:

dataproc
├── README.md
├── zipfolders.sh
├── src
│   ├── main.py
│   ├── jobs
│   │   └── myjob
│   │       └── __init__.py
│   │       └── Manager.py
│   │       └── Modelling.py
│   │       └── ExtractFeatures.py
│   │       └── Utility.py
│   ├── shared
│   │       └── __init__.py
│   │       └── ...

SparkSession文件中创建main.py,然后在每个作业及以下类中的__init__.py文件中将其传递给构造函数。除SparkSession UDF之外,使用此GROUP_MAP调用的所有功能均按预期工作。注意:有一个标量Pandas UDF,可以正常工作。

无论如何,所以我在analyze中有一个__init__.py函数,它调用Manager.pyManger然后继续呼叫Utility.pyExtractFeatures.pyModelling.py。一切正常,直到我在Modelling中的数据帧上调用动作为止。我在其他地方都使用过动作进行测试,而且效果很好。

在我的Modelling类中,我调用下面的Pandas UDF,然后在其上使用show()操作。

    def groupedUDF(self, data, grp_key):
        print("checkpoint???")
        schema = StructType([
            StructField("str_site_num", LongType(), True),
            StructField("artcl_num", LongType(), True),
            StructField("pe_val", DoubleType(),True)
        ])
        @pandas_udf(schema, PandasUDFType.GROUPED_MAP)
        def run_artcl_mdl(keys : list, df_artcl : pd.DataFrame):
            return pd.DataFrame({'str_site_num': 'testsite', 'artcl_num': 'testarticle', 'pe_val': 1.0}, index=[0])
        res_df = data.groupby(*grp_key).apply(run_artcl_mdl)
        res_df_cached = res_df.persist()
        return res_df_cached

在返回的数据帧上运行show()会给我错误。

AttributeError: 'NoneType' object has no attribute '_jvm'

我在SparkSession之前和之后均未执行任何断言,并且没有任何返回错误。任何帮助将不胜感激。

完整日志太长,无法附加,但是我在相同的日期框架中的printSchema()上叫show(),效果很好。

0 个答案:

没有答案