簡體   English   中英

pyspark NameError:未定義全局名稱“累加器”

[英]pyspark NameError: global name 'accumulators' is not defined

我遵循了快速入門教程。

我的腳本是

from pyspark import SparkContext

logFile = 'README.md'
sc = SparkContext('local', 'Simple App')
logData = sc.textFile(logFile).cache()

numAs = logData.filter(lambda s: 'a' in s).count()
numBs = logData.filter(lambda s: 'b' in s).count()

print 'Lines with a: %i, lines with b: %i' % (numAs, numBs)

我在命令行上運行腳本

$SPARK_HOME/bin/spark-submit --master local[2]  SimpleApp.py

回溯(最近一次調用最后一次):
文件“/home/huayu/Programs/Machine_learning/spark_exe/quick_start/SimpleApp.py”,第 4 行,在 sc = SparkContext('local', 'Simple App')
文件“/home/huayu/Downloads/Software/spark/python/pyspark/context.py”,第115行,在init conf、jsc、profiler_cls中)
文件“/home/huayu/Downloads/Software/spark/python/pyspark/context.py”,第174行,在_do_init self._accumulatorServer = accumulators._start_update_server()
NameError:未定義全局名稱“累加器”

當我運行python SimpleApp.py ,它運行良好。

我從https://github.com/GUG11/spark(2.1.0版)獲得 Spark,我使用 python 2.7.12。

還有另一個關於 Spark 累加器的問題,但我的問題中的錯誤信息是不同的。 pyspark ImportError:無法導入名稱累加器

您確實錯過了添加實際上創建 Spark 上下文/會話的getOrCreate()在 2021 年,您寧願使用 Spark 會話而不是 Spark 上下文,因為它現在可以在同一鏈接http://spark.apache.org/docs 上找到/latest/quick-start.html#self-contained-applications

"""SimpleApp.py"""
from pyspark.sql import SparkSession

logFile = "YOUR_SPARK_HOME/README.md"  # Should be some file on your system
spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
logData = spark.read.text(logFile).cache()

numAs = logData.filter(logData.value.contains('a')).count()
numBs = logData.filter(logData.value.contains('b')).count()

print("Lines with a: %i, lines with b: %i" % (numAs, numBs))

spark.stop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM