[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


解决问题,得到预期结果。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytest是一个功能强大的Python测试框架,而requests是一个方便进行HTTP请求的库。在进行pytest requests项目搭建,我们可以按照以下步骤进行: 1. 创建项目目录:首先,我们需要在本地创建一个项目目录。可以使用命令行或者文件管理器来创建。比如可以执行`mkdir pytest-requests-project`来创建一个名为pytest-requests-project的目录。 2. 进入项目目录:使用命令行进入项目的根目录,可以执行`cd pytest-requests-project`来进入刚才创建的项目目录。 3. 创建虚拟环境:项目一般都会使用虚拟环境来隔离依赖。可以使用自带的venv模块创建虚拟环境。执行`python -m venv venv`创建一个名为venv的虚拟环境。 4. 激活虚拟环境:根据使用的操作系统,激活虚拟环境的方式不同。在Linux或macOS上,执行`source venv/bin/activate`来激活虚拟环境。在Windows上,执行`venv\Scripts\activate`来激活虚拟环境。 5. 安装pytest和requests:在激活的虚拟环境中,执行`pip install pytest requests`来安装pytest和requests两个库。 6. 编写测试用例:在项目目录下创建一个名为test_*.py的文件,用来编写测试用例。可以使用pytest的装饰器,比如`@pytest.mark.parametrize`来定义参数化的测试用例。 7. 运行测试:在命令行中,使用pytest命令来运行测试。执行`pytest`将会自动寻找项目目录下以test_开头的文件并执行其中的测试用例。 8. 查看测试结果:测试运行结束后,pytest会显示测试结果的摘要信息。可以通过添加不同的命令行参数来获得详细的测试报告,如`--verbose`参数可以显示每个测试用例的详细信息。 通过以上步骤,我们就可以成功搭建一个基于pytest和requests的Python项目。使用这个项目,我们可以方便地进行HTTP请求的测试,并且能够通过pytest强大的断言功能来验证响应的正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值