python - 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
解决方案
我从文档中找到了这个。
在 Scala、Python 和 R 环境中,SparkContext、SQLContext 和 ZeppelinContext 会自动创建并分别作为变量名 sc、sqlContext 和 z 公开。使用 Spark 2.x 时,从 0.6.1 开始,SparkSession 可用作变量 spark。
这意味着它sc
适用于 scala,而您必须sqlContext
用于 pyspark。
推荐阅读
- aws-lambda - 无服务器 nuxt 应用程序中的路由不起作用
- python - 将数据从 API 写入 CSV
- python-3.x - 如何更改python子列表中元素的大小写?
- python - RuntimeWarning:exp 中遇到溢出(记录到相对)
- java - 重复提醒通知Android(java)问题
- java - Groovy + Spock 测试“Validator”类型的 void 方法,在不满足条件时抛出错误
- java - arraylist 如何在子集算法中操作和重用
- vue.js - 状态在多个应用程序之间共享。- vuex 持久化状态
- python - 使用 hvplot 从 xarray 数据集中绘制两个数据变量
- android - 过滤器正在折叠列表视图