spark和python的关系_spark submit和pyspark有什么区别?

在尝试使用`spark submit`运行包含自定义类的PySpark脚本时遇到了错误。当直接在pyspark交互式环境中运行脚本时一切正常,但通过命令行提交时,遇到`uninitialized staticmethod object`的RuntimeError。问题在于静态方法未正确初始化。运行pyspark和spark submit的主要区别在于启动方式和依赖加载,导致了执行行为的差异。解决办法可能是确保在脚本中正确初始化静态方法,以便在非交互式环境下也能正常工作。
摘要由CSDN通过智能技术生成

如果启动pyspark,然后运行以下命令:import my_script; spark = my_script.Sparker(sc); spark.collapse('./data/')

一切都很好。但是,如果我试图通过命令行和spark submit做同样的事情,我会得到一个错误:Command: /usr/local/spark/bin/spark-submit my_script.py collapse ./data/

File "/usr/local/spark/python/pyspark/rdd.py", line 352, in func

return f(iterator)

File "/usr/local/spark/python/pyspark/rdd.py", line 1576, in combineLocally

merger.mergeValues(iterator)

File "/usr/local/spark/python/pyspark/shuffle.py", line 245, in mergeValues

for k, v in iterator:

File "/.../my_script.py", line 173, in _json_args_to_arr

js = cls._json(line)

RuntimeError: uninitialized staticmethod object

我的剧本:...

if __name__ == "__main__":

args = sys.argv[1:]

if args[0] == 'collapse':

directory = args[1]

from pyspark import SparkContext

sc = SparkContext(appName="Collapse")

spark = Sparker(sc)

spark.collapse(directory)

sc.stop()

为什么会这样?运行pyspark和运行spark submit有什么区别,这会导致这种分歧?我如何才能在spark submit中完成这项工作?

编辑:我试着通过执行pyspark my_script.py collapse ./data/从bash shell运行它,得到了相同的错误。只有当我在一个python shell中并导入脚本时,一切才能正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值