1. 程式人生 > >[Mark] Spark+Python 初學時遇到的問題

[Mark] Spark+Python 初學時遇到的問題

i本人初學Spark,記錄點滴收穫,自己mark一下,也希望對各位有幫助。

平臺及版本:

ubuntu12.04 LTS /  python-2.7.3 / hadoop-2.7.1 / spark-1.6.0-bin-without-hadoop

基本安裝配置不做介紹,推薦參考廈門大學 林子雨 老師的網上教程(非常詳細)。

執行《Spark 機器學習》教材中的1.6節程式碼出錯:

"""檔名為 pythonapp.py"""
from pyspark import SparkContext

sc = SparkContext("local[2]", "First Spark App")
# we take the raw data in CSV format and convert it into a set of records of the form (user, product, price)
data = sc.textFile("data/UserPurchaseHistory.csv").map(lambda line: line.split(",")).map(lambda record: (record[0], record[1], record[2]))
# let's count the number of purchases
numPurchases = data.count()
# let's count how many unique users made purchases
uniqueUsers = data.map(lambda record: record[0]).distinct().count()
# let's sum up our total revenue
totalRevenue = data.map(lambda record: float(record[2])).sum()
# let's find our most popular product
products = data.map(lambda record: (record[1], 1.0)).reduceByKey(lambda a, b: a + b).collect()
mostPopular = sorted(products, key=lambda x: x[1], reverse=True)[0]

# Finally, print everything out
print "Total purchases: %d" % numPurchases
print "Unique users: %d" % uniqueUsers
print "Total revenue: %2.2f" % totalRevenue
print "Most popular product: %s with %d purchases" % (mostPopular[0], mostPopular[1])

# stop the SparkContext
sc.stop()

-----------------------------------------------------報錯顯示-------------------------------------

Traceback (most recent call last):
  File "/usr/local/spark/bin/pythonapp.py", line 8, in <module>
    numPurchases = data.count()
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 1004, in count
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 995, in sum
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 869, in fold
  File "/usr/local/spark/python/lib/pyspark.zip/pyspark/rdd.py", line 771, in collect
  File "/usr/local/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
  File "/usr/local/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError



-------------------------------------------------------解答----------------------------------------------

啟動 hadoop,在hdfs中建立一個路徑:/usr/hadoop/input/

並將"pythonapp.py"中,data 的路徑改為:"/usr/hadoop/input/UserPurchaseHistory.csv"

在spark/bin目錄下,執行pythonapp.py

解決問題,得到預期結果。

相關推薦

[Mark] Spark+Python 初學時遇到的問題

i本人初學Spark,記錄點滴收穫,自己mark一下,也希望對各位有幫助。 平臺及版本: ubuntu12.04 LTS /  python-2.7.3 / hadoop-2.7.1 / spark-1.6.0-bin-without-hadoop 基本安裝配置不做介紹

python體驗

list python 字典 python初體驗:1.python種類 CPython 代碼 -> C字節碼 -> 機器碼 (一行一行) pypy 代碼 -> C字節碼 -> 機器碼 全部轉換完 -> 執行 其他Python 代碼 -&g

我的spark python 決策樹實例

one ray print classes gin array erro parallel depth from numpy import array from pyspark.mllib.regression import LabeledPoint from pyspa

python 學習 模擬用戶登錄

shel __name__ print 密碼 tao 連續 while lis 初學 #!/usr/bin/env python#coding:utf-8‘‘‘ 2017年8月19日  python 模擬用戶登錄,連續失敗次數超過3次永輝名被鎖定 userfil

Pandas基礎學習與Spark Python初探

入學 init sparkconf sch 時間 com inux mas 取數 摘要:pandas是一個強大的Python數據分析工具包,pandas的兩個主要數據結構Series(一維)和DataFrame(二維)處理了金融,統計,社會中的絕大多數典型用例科學,以及許多

Python印象

印象 相對 簡單 我們 python 語言 它的 手寫 簡單的 Python第一次聽到python,就有一種很難學的感覺,會不由自主的跟C語言聯系起來,晦澀難懂,怕學不會,還懷疑自己會成為一個碼農。第一次課上下來,感覺並不像想象中的困難,相對C語言來說,還是很容易理解的,

[Spark][Python]RDD flatMap 操作例子

line var 元素 bsp ini atd 執行函數 clas park RDD flatMap 操作例子: flatMap,對原RDD的每個元素(行)執行函數操作,然後把每行都“拍扁” [[email protected] ~]$

[Spark][Python]PageRank 程序

ges flat pagerank textfile for tex park com lambda PageRank 程序: file contents: page1 page3page2 page1page4 page1page3 page1page4 page2p

[Spark][python]以DataFrame方式打開Json文件的例子

文件的 kset schedule sin ade tasks nec session reat [Spark][python]以DataFrame方式打開Json文件的例子: [[email protected] ~]$ cat people.json{"na

[Spark][Python]Spark 訪問 mysql , 生成 dataframe 的例子:

sca spec star manager started nsa domain /tmp form [Spark][Python]Spark 訪問 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jd

[Spark][Python]spark 從 avro 文件獲取 Dataframe 的例子

imp oca block sql contex local put driver tput [Spark][Python]spark 從 avro 文件獲取 Dataframe 的例子 從如下地址獲取文件: https://github.com/databricks/

[Spark][Python]DataFrame中取出有限個記錄的例子

dep ins pytho rem json.js art hadoop fileinput taskset [Spark][Python]DataFrame中取出有限個記錄的例子: sqlContext = HiveContext(sc) peopleDF = sql

[Spark][Python]DataFrame select 操作例子

pytho partition rac executor logs part ner man add [Spark][Python]DataFrame中取出有限個記錄的例子 的 繼續 In [4]: peopleDF.select("age")Out[4]: Data

[Spark][Python]DataFrame where 操作例子

frame .sh data mit spark dia where () limit [Spark][Python]DataFrame中取出有限個記錄的例子 的 繼續 [15]: myDF=peopleDF.where("age>21") In [16]: my

[Spark][Python]Spark Join 小例子

ont nta text read null json corrupt led park [[email protected] ~]$ hdfs dfs -cat people.json {"name":"Alice","pcode":"94304"}{"nam

[Spark][Python]DataFrame的左右連接例子

pytho ont logs state codes name () class clas [Spark][Python]DataFrame的左右連接例子 $ hdfs dfs -cat people.json {"name":"Alice","pcode":

[Spark][Python][DataFrame][SQL]Spark對DataFrame直接執行SQL處理的例子

hdfs temp div python people data name where afr [Spark][Python][DataFrame][SQL]Spark對DataFrame直接執行SQL處理的例子 $cat people.json {"name":"

Spark Python API 官方文檔中文版》 之 pyspark.sql (一)

開始 clear sorted 緩存 news 數據 sch json 大數 摘要:在Spark開發中,由於需要用Python實現,發現API與Scala的略有不同,而Python API的中文資料相對很少。每次去查英文版API的說明相對比較慢,還是中文版比較容易get到所

2018.2.21 Python 學習

輸出 hello 指定 play 一次 保持 替換 ont text 折騰了一天,一直在用CMD學習Python寫Hello World。偶然間發現可以用Pycharm。也算是給後面想學習的人提個醒,方便省事許多。 format()使用方法。 age = 20name =

python識別面向對象編程

python1.當類僅作為名稱空間使用,如下 >> m.a=1Traceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name ‘m‘ is not