python - spark-submit 和 pyspark 有什么区别?

标签 python apache-spark pyspark

如果我启动 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 中导入脚本时。

最佳答案

  1. 如果您构建了 spark 应用程序,则需要使用 spark-submit 来运行该应用程序

    • 代码可以用python/scala编写

    • 模式可以是本地/集群

  2. 如果您只想测试/运行几个单独的命令,您可以使用 spark 提供的 shell

    • pyspark(用于 python 中的 spark)
    • spark-shell(用于 scala 中的 spark)

关于python - spark-submit 和 pyspark 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726780/

相关文章:

python - Pyspark 错误与 UDF : py4j. Py4JException: 方法 __getnewargs__([]) 不存在错误

java - 如何在不使用 spark-submit 的情况下将 java 程序中的 spark 作业提交到独立的 spark 集群?

python - 以更好的模式重写我的简单 Python 代码

python - 打印到控制台终端而不是 IPython Notebook 的单元格输出

python - 使用 adodbapi 在 python 中创建与 Vertica 数据库的连接

apache-spark - Spark Cassandra : join table with condition on the query based on attribute from the primary RDD ("where tableA.myValue > tableB.myOtherValue")

python - App Engine/Python/Django 非 JSON 上的身份验证

python - 无法使用 pyspark 数据帧将 utm 转换为 latlong

apache-spark - 如何将 PythonRDD(JSON 中的行)转换为 DataFrame?

python - pyspark 数据框和多边形(geopandas)之间的空间连接