Как запустить приложение pyspark, которое распространяется по яйцам? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть простое приложение pyspark, которое запущено, но я хочу запустить его распространяемое яйцо вместо управления большим количеством файлов .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

АЯ получаю этот файл с одним яйцом:

displayStats-0.0.1-py2.7.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Имя класса в команде (я думаю Имя основного класса требуется только в том случае, если у нас есть проект scala или java, потому что у меня нет класса в main .py):

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$2).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Пожалуйста, помогите мне в этом сценарии, я могу запустить задание, если я их запишу, но хочу запустить файл яйца. Я не нашел никакого решения в сети.

Спасибо.

1 Ответ

1 голос
/ 08 октября 2019

Вы не используете правильную опцию, для 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.
...