我使用pyinstaller为pySpark脚本创建了一个exe文件。但是,当我运行exe时,我遇到“没有名为'py4j.java_collections'的模块”错误。
pyinstaller版本-3.5
python版本-Python 3.7.1
火花版本-2.4.3
操作系统-Windows 10
我正在使用 pyinstaller -F myscript.py 命令创建exe。 我查找了其他线程,并在Windows环境变量中的路径变量下面添加了
PYTHONPATH = $ SPARK_HOME / python /:$ PYTHONPATH; $ SPARK_HOME / python / lib / py4j-0.8.2.1-src.zip:$ PYTHONPATH
SPARK_HOME = C:\ Users \\ Desktop \ spark \ spark-2.4.3-bin-hadoop2.7
我的脚本也具有用于输入和消息对话框的wx组件。
import glob
from pyspark.sql import SparkSession
#Spark Session
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.config("spark.sql.session.timeZone", "UTC") \
.config("spark.sql.execution.pandas.respectSessionTimeZone", "False") \
.getOrCreate()
try:
app = wx.App()
app.MainLoop()
fileLocationBox = wx.TextEntryDialog(None, 'Enter File Directory :', 'Convert To CSV', 'Enter Parquet File Location')
if fileLocationBox.ShowModal() == wx.ID_OK:
fileLoc = fileLocationBox.GetValue()
fileLocationBox.Destroy()
files = [f for f in glob.glob(fileLoc + "**/*.parquet", recursive=True)]
t = spark.read.load(files)
t.coalesce(1).write.csv(fileLoc+'\\OutputCSV', header=True)
dlg = wx.MessageDialog(None, "Output CSV generated", "Output", wx.OK)
if dlg.ShowModal() == wx.ID_OK:
dlg.Destroy()
except Exception as e:
print ("ERROR:")
print (type(e)) # the exception instance
print (e.args)
我没有其他选择了。请帮助解决这个问题。