python - 如何使用多个 python 文件提交 pyspark 作业?
问题描述
我正在弄清楚如何提交使用 pycharm ide 开发的 pyspark 作业。有 4 个 python 文件,1 个 python 文件是与 pyspark 作业一起提交的主 python 文件,但其余 3 个文件导入到主 python 文件中,但我无法理解我的 python 文件是否都在 s3 bukcet 中可用,如何spark 作业将能够引用那些未使用 pyspark submit 命令提交的作业。例如:文件 1、文件 2、文件 3、文件 4
spark-submit --master local --driver-memory 2g --executor-memory 2g s3_path\file1.py
file2 , file3 , file4 被导入到 file1 但我想知道 spark 如何引用其他 python 文件。
解决方案
创建一个包(egg
文件)
使用setuptools
将您的文件夹创建到可导入包中。假设您在文件夹下有多个文件mypackage
,如下所示:
mypackage
|-- file1.py
|-- file2.py
|-- ...
`-- __init__.py
使用setuptools
您可以创建一个 egg 文件(这是一种压缩版本的包)
egg
将文件传递给spark-submit
spark-submit --pyfiles mypackage.egg <rest of the args>
在 Spark 应用程序中导入包的内容
from mypackage.file1 import somefunction
somefunction()
这里更重要的一件事是,如果您有权访问/能够 pip install 东西,而不是使用egg
create a wheel
file and run pip install s3_path/<wheel-file>
,它将安装包并将您的可运行脚本复制到/usr/local/bin/
或等效路径立即使您的生活更轻松。
推荐阅读
- html - CSS overflow-x: hidden 使某些元素在移动设备上上下移动
- unit-testing - 模拟器中firebase规则的简单单元测试总是失败
- ios - 使用多个平台分发 xcframework 的 Pod 验证失败
- azure - 如何使用 databricks 将一个 azure 数据湖容器中的所有内容传输到另一个容器?
- lambda - Lambda Calculus 中的pair/vireo 访问如何工作?
- regex - 正则表达式忽略字符串中的字母数字字符
- c# - C# Discord webhook,发送图像并将文本放在该图像上
- android - 在 ViewPager2 中禁用以下项目
- amazon-web-services - 如何覆盖 Amplify 登录页面
- intellij-idea - 如何从非 Java 扩展(如 .conf 文件)导航到 Java 类声明?