[Mark] Spark+Python 初学时遇到的问题
来源:互联网 发布:淘宝男士韩版鞋 编辑:程序博客网 时间:2024/05/29 09:03
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 初学时遇到的问题
- python初学selenium+phantomjs遇到的问题
- python初学遇到的问题汇总
- 初学python遇到的一个小问题
- 初学python遇到的问题大全
- mark一下遇到的问题
- 初学遇到的问题
- 集成tiles3时遇到的问题,mark一下
- Ext 初学时遇到的问题
- Ext 初学时遇到的问题2
- Ext 初学时遇到的问题3
- 初学ASP时遇到的一些问题
- 初学webapi时遇到的奇葩问题
- unit03dy中初学时遇到的问题
- Spark遇到的问题
- 初学python遇到的几个问题
- 初学c++遇到的问题
- 初学struts2遇到的问题
- maven依赖关系中Scope的作用
- 数据结构(排序)--插入排序(未优化)
- 排序算法之插入排序
- 自定义控件之viewPager轮播图
- lua C/C++
- [Mark] Spark+Python 初学时遇到的问题
- CUDA编程(三):线程模型
- 笔记11:java_String类的特点
- 23. Merge k Sorted Lists
- IO多路复用里select、poll、epoll的区别
- 大数的运算实现(C++、字符串)、Git使用示例
- 题目1018:统计同成绩学生人数
- Java调用bat文件
- Web前端 - webpack和babel勾结