開始我使用的python3.7 spark2.1 利用sparkStreaming 時出現錯誤( RuntimeError: generator raised StopIteration):
如下:
python 代碼:
import os JAVA_HOME = '/usr/local/java/jdk1.8.0_131' PYSPARK_PYTHON = "/usr/local/python3/python" SPARK_HOME = "/bigdata/spark-2.1.2-bin-hadoop2.3" os.environ["JAVA_HOME"] = JAVA_HOME os.environ["PYSPARK_PYTHON"] = PYSPARK_PYTHON # os.environ["PYSPARK_DRIVER_PYTHON"] = PYSPARK_PYTHON os.environ["PYSPARK_DRIVER_PYTHON"] = PYSPARK_PYTHON # os.environ["SPARK_HOME"] = SPARK_HOME from pyspark import SparkContext from pyspark.streaming import StreamingContext if __name__ == '__main__': sc = SparkContext("local[2]", appName="NetworkWordCount") # 參數2:指定執行計算的時間間隔 ssc = StreamingContext(sc, 1) # 監聽ip,端口上的上的數據 lines = ssc.socketTextStream('localhost', 9999) # 將數據按空格進行拆分為多個單詞 words = lines.flatMap(lambda line: line.split(" ")) # 將單詞轉換為(單詞,1)的形式 pairs = words.map(lambda word: (word, 1)) # 統計單詞個數 wordCounts = pairs.reduceByKey(lambda x, y: x + y) # 打印結果信息,會使得前面的transformation操作執行 wordCounts.pprint() # 啟動StreamingContext ssc.start() # 等待計算結束 ssc.awaitTermination()
報錯:
發現了老外的網頁:https://stackoverflow.com/questions/56591963/runtimeerror-generator-raised-stopiteration-how-to-fix-this-python-issue
說是python3.7 和spark2.1 不兼容
好家伙,去官網下載了spark3.3 就解決了(https://spark.apache.org/downloads.html)
順便記錄一哈,我用的是python,如何安裝使用spark
1: 官網下載上傳解壓
2:配置環境變量 ~/bashrc
3: 將/spark/python/pyspark 復制到 python 的安裝包中
4: 運行 /spark/bin 下的 pyspark