Если вы пытаетесь запустить sparky.py и используете функцию внутри HappyBirthday.py, вы можете попробовать что-то вроде этого.
spark-submit \
--deploy-mode cluster --master yarn \
--py-files s3://<PATH TO FILE>/HappyBirthday.py \
s3://<PATH TO FILE>/sparky.py
Просто помните, что в s3 нет понятия «папки», поэтому вам просто нужно указать точный путь к файлам или группе файлов.
Если в вашем проекте есть целая куча зависимостей, вы можете объединить их все в один файл .zip с необходимыми init .py файлами и импортировать любые из них.функции внутри библиотек.
Например - у меня есть библиотека sqlparse в качестве зависимости, с кучей файлов Python внутри.У меня есть zip-файл пакета, как показано ниже.
unzip -l packages.zip
Archive: packages.zip
0 05-05-2019 12:44 sqlparse/
2249 05-05-2019 12:44 sqlparse/__init__.py
5916 05-05-2019 12:44 sqlparse/cli.py
...
110 05-05-2019 12:44 sqlparse-0.3.0.dist-info/WHEEL
--------- -------
125034 38 files
Это загружается на S3 и затем используется в работе.
spark-submit --deploy-mode cluster --master yarn --py-files s3://my0-test-bucket/artifacts/packages.zip s3://my-test-script/script/script.py
Мой файл может содержать импорт, как показано ниже.
import pyspark
import sqlparse # Importing the library
from pprint import pprint