ai didi

apache-spark - PySpark:ModuleNotFoundError:没有名为 'app' 的模块

转载 作者:行者123 更新时间:2023-12-04 04:00:40 24 4
gpt4 key购买 nike

我正在使用以下语句将数据框保存到 PySpark 中的 CSV 文件中:

df_all.repartition(1).write.csv("xyz.csv", header=True, mode='overwrite')

但我得到以下错误
Caused by: org.apache.spark.api.python.PythonException: Traceback (most recent call last):
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 218, in main
func, profiler, deserializer, serializer = read_udfs(pickleSer, infile, eval_type)
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 138, in read_udfs
arg_offsets, udf = read_single_udf(pickleSer, infile, eval_type)
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 118, in read_single_udf
f, return_type = read_command(pickleSer, infile)
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py", line 58, in read_command
command = serializer._read_with_length(file)
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 170, in _read_with_length
return self.loads(obj)
File "/opt/spark-2.3.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py", line 559, in loads
return pickle.loads(obj, encoding=encoding)
ModuleNotFoundError: No module named 'app'

我正在使用 PySpark 2.3.0 版

尝试写入文件时出现此错误。
    import json, jsonschema
from pyspark.sql import functions
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType, StringType, FloatType
from datetime import datetime
import os

feb = self.filter_data(self.SRC_DIR + "tl_feb19.csv", 13)
apr = self.filter_data(self.SRC_DIR + "tl_apr19.csv", 15)

df_all = feb.union(apr)
df_all = df_all.dropDuplicates(subset=["PRIMARY_ID"])

create_emi_amount_udf = udf(create_emi_amount, FloatType())
df_all = df_all.withColumn("EMI_Amount", create_emi_amount_udf('Sanction_Amount', 'Loan_Type'))

df_all.write.csv(self.DST_DIR + "merged_amounts.csv", header=True, mode='overwrite')

最佳答案

错误很明显,没有模块'app'。 您的 Python 代码在驱动程序上运行,但您 udf 在执行程序 PVM 上运行。 当您调用 udf , spark 序列化 create_emi_amount将其发送给执行人。

所以,在你的方法中的某处create_emi_amount您使用或导入应用程序模块。
解决您的问题的方法是在驱动程序和执行程序中使用相同的环境。在 spark-env.shPYSPARK_DRIVER_PYTHON=... 中设置保存 Python virtualenv和 PYSPARK_PYTHON=... .

关于apache-spark - PySpark:ModuleNotFoundError:没有名为 'app' 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901591/

24 4 0
文章推荐: maven-2 - 是否有任何类似于 'dist' 的 Maven 目标?
文章推荐: sorting - OpenGL深度排序
文章推荐: apache-spark - 了解Spark Shuffle溢出
文章推荐: readability - 用于提高对陌生代码的理解的工具和技术?
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com