如何运行 pyspark应用是egg分布式的?
How to run pyspark application which is egg distributed?
我有一个简单的 pyspark 应用程序,它是 运行ning 但我想 运行 它的 egg 可分发而不是管理大量 .py 文件。作为入门应用程序,它仅读取文件并显示它。
项目层次结构如下:
DisplayStats
|
|__ src
| |___ displayStats.py
| |___ __init__.py
|
|__ __main__.py
|__ setup.py
main.py:
代码
from src import displayStats
if __name__ == '__main__':
displayStats.showStats()
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
我得到了这个 egg 文件:
displayStats-0.0.1-py2.7.egg
现在我想 spark-submit 这个 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 class Name(我认为 Main class Name仅当我们有 scala 或 java 项目时才需要,因为我在 main.py 中没有 class:
2) spark-submit --master local --class __main__ gill-0.0.1-py2.7.egg
Command Prompt shows these 4 warnings but job is not submitted:
19/10/08 15:34:19 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
log4j:WARN No appenders could be found for logger (org.apache.spark.deploy.SparkSubmit$$anon).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
请在这种情况下指导我,如果我压缩它们,我可以 运行 一份工作,但我想要 运行 egg 文件。我还没有在网上找到任何解决方案。
谢谢。
您使用的选项不正确,python 您应该使用 --py-files
。
spark-submit --master local --py-files displayStats-0.0.1-py2.7.egg __main__.py
部分摘自 spark-submit 帮助
--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.
我有一个简单的 pyspark 应用程序,它是 运行ning 但我想 运行 它的 egg 可分发而不是管理大量 .py 文件。作为入门应用程序,它仅读取文件并显示它。
项目层次结构如下:
DisplayStats
|
|__ src
| |___ displayStats.py
| |___ __init__.py
|
|__ __main__.py
|__ setup.py
main.py:
代码from src import displayStats
if __name__ == '__main__':
displayStats.showStats()
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
我得到了这个 egg 文件:
displayStats-0.0.1-py2.7.egg
现在我想 spark-submit 这个 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 class Name(我认为 Main class Name仅当我们有 scala 或 java 项目时才需要,因为我在 main.py 中没有 class:
2) spark-submit --master local --class __main__ gill-0.0.1-py2.7.egg
Command Prompt shows these 4 warnings but job is not submitted:
19/10/08 15:34:19 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
log4j:WARN No appenders could be found for logger (org.apache.spark.deploy.SparkSubmit$$anon).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
请在这种情况下指导我,如果我压缩它们,我可以 运行 一份工作,但我想要 运行 egg 文件。我还没有在网上找到任何解决方案。
谢谢。
您使用的选项不正确,python 您应该使用 --py-files
。
spark-submit --master local --py-files displayStats-0.0.1-py2.7.egg __main__.py
部分摘自 spark-submit 帮助
--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.