繁体   English   中英

不带Spark提交的Exec pyspark独立脚本

[英]Exec pyspark standalone script without spark-submit

我是在Linux机器上安装Spark的新手,可能有一个基本问题:我已经安装了Spark版本1.6.0和Python 2.6.6。

在星火交互模式下,我能够运行这些简单的命令来计数README.md文件中的行数。

但是,我希望能够创建一个独立的Python脚本并获得相同的结果,但是却出现错误。

我在test.py中的 python代码-

#!/usr/bin/python
import pyspark
from pyspark import SparkContext, SparkConf

if __name__ == "__main__":
    conf = SparkConf().setAppName("word count").setMaster("local[3]")
    sc = SparkContext(conf = conf)


    rdd = sc.textFile("/opt/spark/README.md")

    print(rdd.count())

如果我以-

spark-submit ./test.py 

我得到正确的结果。

95

我的问题是,为什么我不能这样运行-

./test.py 

因为我在python脚本中导入pyspark和SparkContext。

我得到了错误-

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    sc = SparkContext(conf = conf)
  File "/usr/local/lib/python2.7/site-packages/pyspark/context.py", line 118, in __init__
    conf, jsc, profiler_cls)
  File "/usr/local/lib/python2.7/site-packages/pyspark/context.py", line 188, in _do_init
    self._javaAccumulator = self._jvm.PythonAccumulatorV2(host, port)
TypeError: 'JavaPackage' object is not callable

我知道我想根据我的google搜索在某处添加一些jar,但是我不明白我到底在做什么。 如果有人可以向我介绍如何设置Spark变量和CLASSPATH的基础教程,我将不胜感激。

我已经读过这个问题,但是没有那么详细-

spark-submit和pyspark有什么区别?

谢谢。

让我们关注两个信息:

  • 我已经安装了Spark版本1.6.0和Python 2.6.6

  •  self._javaAccumulator = self._jvm.PythonAccumulatorV2(host, port) 

这些部分表明您错误地配置了Spark安装:

  • 您相信会使用Spark 1.6(这似乎是您路径中的jar版本)。
  • 路径中的Python包使用Spark 2.1.0( SPARK-16861 )中引入的代码。

这很可能是由于错误设置了PYTHONPATH或等效的环境变量导致的。

user8371915-您为我指明了正确的方向,这是根本没有设置PYTHONPATH的问题。

我发现此链接涵盖了我需要的所有信息,并且能够使我的代码仅运行-

./test.py

95

http://efimeres.com/2016/03/setup-spark-standalone/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM