Python 2.7 如何运行鸡蛋分发的pyspark应用程序?

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

我有一个简单的pyspark应用程序正在运行,但我想运行它的egg可分发应用程序,而不是管理大量的.py文件。作为初学者应用程序,它只读取并显示文件

项目层次结构如下所示:

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我认为这是不可能的。这就是它的实施方式。