首页 > 解决方案 > zeppelin aws中的spark python错误运行程序

问题描述

我在 zeppelin Web 服务 spark aws emr 中尝试了有关 python 的示例代码,并在运行此代码时发现错误,我期望的输出是我的 s3 存储中的文件中的字数

text_file = sc.textFile("s3://mybuckettest2/Scenarios.txt")
counts = text_file.flatMap(lambda line: line.split(" ")) \
             .map(lambda word: (word, 1)) \
             .reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile("s3://mybuckettest2/test.txt")

错误:

 Traceback (most recent call last):
  File "/tmp/zeppelin_python-2374039163027007666.py", line 319, in <module>
    raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
  File "/tmp/zeppelin_python-2374039163027007666.py", line 307, in <module>
    exec(code, _zcUserQueryNameSpace)
  File "<stdin>", line 1, in <module>
NameError: name 'sc' is not defined

标签: pythonamazon-web-servicesapache-sparkapache-zeppelin

解决方案


我从文档中找到了这个。

在 Scala、Python 和 R 环境中,SparkContext、SQLContext 和 ZeppelinContext 会自动创建并分别作为变量名 sc、sqlContext 和 z 公开。使用 Spark 2.x 时,从 0.6.1 开始,SparkSession 可用作变量 spark。

这意味着它sc适用于 scala,而您必须sqlContext用于 pyspark。


推荐阅读