gpt4 book ai didi

apache-spark - 在 python main 中使用 spark-submit

转载 作者:行者123 更新时间:2023-12-03 15:01:57 24 4
gpt4 key购买 nike

阅读 thisthis让我觉得可以通过 spark-submit 执行 python 文件但是我无法让它工作。

我的设置有点复杂。我需要将几个不同的 jar 与我的 python 文件一起提交,以便一切正常运行。我的 pyspark有效的命令如下:

IPYTHON=1 ./pyspark --jars jar1.jar,/home/local/ANT/bogoyche/dev/rhine_workspace/env/Scala210-1.0/runtime/Scala2.10/scala-library.jar,jar2.jar --driver-class-path jar1.jar:jar2.jar
from sys import path
path.append('my-module')
from my-module import myfn
myfn(myargs)

我已经将我的python文件打包在一个egg中,egg包含主文件,它通过调用 python myegg.egg使egg可执行。

我现在正在尝试形成我的 spark-submit命令,我似乎无法正确执行。这是我的位置:
./spark-submit --jars jar1.jar,jar2.jar --py-files path/to/my/egg.egg arg1 arg
Error: Cannot load main class from JAR file:/path/to/pyspark/directory/arg1
Run with --help for usage help or --verbose for debug output

它没有执行我的 .egg 文件,而是采用 egg 的第一个参数并将其视为一个 jar 文件并尝试从中加载一个类?我究竟做错了什么?

最佳答案

一种方法是将 Spark 应用程序的主驱动程序作为传递给 spark-submit 的 python 文件 (.py)。此主脚本具有帮助驱动程序识别入口点的主要方法。该文件将自定义配置属性并初始化 SparkContext。

捆绑在鸡蛋可执行文件中的是 依赖项 发送到执行器节点并导入到驱动程序中。

您可以编写一个小文件作为主驱动程序并执行 -

./spark-submit --jars jar1.jar,jar2.jar --py-files path/to/my/egg.egg driver.py arg1 arg

驱动程序将类似于 -
from pyspark import SparkContext, SparkConf
from my-module import myfn

if __name__ == '__main__':
conf = SparkConf().setAppName("app")
sc = SparkContext(conf=conf)
myfn(myargs, sc)

通过 SparkContext在必要时将对象作为参数。

关于apache-spark - 在 python main 中使用 spark-submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38120011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com