Python 2.7 如何运行鸡蛋分发的pyspark应用程序?
我有一个简单的pyspark应用程序正在运行,但我想运行它的egg可分发应用程序,而不是管理大量的.py文件。作为初学者应用程序,它只读取并显示文件 项目层次结构如下所示:Python 2.7 如何运行鸡蛋分发的pyspark应用程序?,python-2.7,apache-spark,pyspark,egg,Python 2.7,Apache Spark,Pyspark,Egg,我有一个简单的pyspark应用程序正在运行,但我想运行它的egg可分发应用程序,而不是管理大量的.py文件。作为初学者应用程序,它只读取并显示文件 项目层次结构如下所示: DisplayStats | |__ src | |___ displayStats.py | |___ __init__.py | |__ __main__.py |__ setup.py main.py的代码: displayStats.py的代码: from pyspark.sql import Spark
DisplayStats
|
|__ src
| |___ displayStats.py
| |___ __init__.py
|
|__ __main__.py
|__ setup.py
main.py的代码:
displayStats.py的代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder
.master("local")
.appName("gill")
.getOrCreate()
df= spark.read.load('rootPath/fileName.csv', format='csv', header='true')
df.show()
setup.py的代码:
setup(name='displayStats',
version='0.0.1',
description='A sample PySpark application',
author='Bilal',
py_moudles=['__main__']
packages=['src'],
zip_safe=False)
使用以下方法制作鸡蛋:
python setup.py bdist_egg
我得到一个鸡蛋文件:
displayStats-0.0.1-py2.7.egg
现在我想提交这个egg文件,我尝试了以下两个命令:
1) spark-submit --master local displayStats-0.0.1-py2.7.egg
I get this exception:
Exception in thread "main" org.apache.spark.SparkException: Cannot load main class from JAR file:/D:/displayStats/dist/displayStats-0.0.1-py2.7.egg
如果我在命令中给出Main类名(我认为Main类名只有在我们有scala或java项目时才是必需的,因为我在Main.py中没有类):
请指导我在这个场景中,我可以运行一个作业,如果我压缩他们,但我想运行鸡蛋文件。我在网上没有找到任何解决办法
谢谢。您没有使用正确的选项,对于python,您应该使用
--py files
spark-submit --master local --py-files displayStats-0.0.1-py2.7.egg __main__.py
来自spark的部分提交帮助
--py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps.
--class CLASS_NAME Your application's main class (for Java / Scala apps).
--name NAME A name of your application.
--jars JARS Comma-separated list of jars to include on the driver and executor classpaths.
您没有使用正确的选项,对于python,您应该使用
--py files
spark-submit --master local --py-files displayStats-0.0.1-py2.7.egg __main__.py
来自spark的部分提交帮助
--py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps.
--class CLASS_NAME Your application's main class (for Java / Scala apps).
--name NAME A name of your application.
--jars JARS Comma-separated list of jars to include on the driver and executor classpaths.
感谢回复,我甚至尝试了--py files选项,但是对于这个命令,我们应该分别有两个文件。EGG文件和单独的main.py文件。我想要的是将egg与集群连接起来,并告诉它在本例中运行的模块名main.py。就像在scala中一样,我们spark将jar提交到集群,我们的主文件在jar中。@BilalShafqat我认为这是不可能的。这就是它的实现方式。感谢您的回复,我甚至尝试了--py files选项,但是对于这个命令,我们应该分别有两个文件。EGG文件和单独的main.py文件。我想要的是将egg与集群连接起来,并告诉它在本例中运行的模块名main.py。就像在scala中一样,我们spark将jar提交到集群,我们的主文件在jar中。@BilalShafqat我认为这是不可能的。这就是它的实施方式。