python动手实践(1)

1. 安装单机版预编译包:

tar zxvf spark-1.3.1-bin-cdh4.tgz

注意选择的Hadoop版本一定与本机上部署的Hadoop版本一致,Java环境也要部署好。

2. 声明系统变量

vi .bashrc

添加如下内容:

export SPARK_HOME=/home/hadoop/spark-1.3.1-bin-cdh4

3. 为了使用pyspark,将此目录下的python子目录下的文件(夹)全部拷贝到本机python的子目录site-packages下

sudo cp -r python/* /usr/lib/python2.6/site-packages/

为了能够使得pyspark能够找到需要的py4j,则再进入python的site-packages,在build目录下将其拷贝到site-packages下:

sudo cp -r py4j/ ..

4. 运行例子程序,其程序代码如下:

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()

执行命令:

python ***.py

该脚本最好的执行方式如下:

[hadoop@HADOOP-206 python-spark-app]$ /home/hadoop/spark-1.3.1-bin-cdh4/bin/spark-submit firstpy.py

5. 上述执行过程,出现如下问题:

Input path does not exist: hdfs://HADOOP-206:19000/user/hadoop/data/UserPurchaseHistory.csv

默认在HDFS上查找读取的文件,为了能够访问本地文件,修改如下:

data = sc.textFile("file:///home/hadoop/spark_code/Chapter01/python-spark-app/data/UserPurchaseHistory.csv")
这是访问本地文件的正确方式。

6. 在此之前,为了测试Spark是否可用,运行其自带的例子:

./run-example org.apache.spark.examples.SparkPi
解析其运行过程如下:

1. spark.SparkContext(启动spark)
2. spark.SecurityManager ACL
3. spark.SparkEnv (注册MapOutputTracker BlockManagerMaster)
4. storage.DiskBlockManager、storage.MemoryStore
5. spark.HttpFileServer、spark.HttpServer
6. server.Server(Jetty)、server.AbstractConnector
在端口4040成功启动SparkUI
http://HADOOP-206:4040
7. spark.SparkContext (add 任务jar包)
8. executor.Executor
 启功executor
9. util.AkkaUtils
10. netty.NettyBlockTransferService 在端口10654创建server
11. storage.BlockManagerMaster  尝试注册BlockManager
12. storage.BlockManagerMasterActor  在localhost:10654注册BlockManager
13. storage.BlockManagerMaster 成功注册BlockManager
14. spark.SparkContext (启动job)
15. scheduler.DAGScheduler  提交Stage 0
16. storage.MemeryStore(Block:broadcast_0_piece0 存入内存)
17. storage.BlockManagerInfo (完成16的信息)
18. storage.BlockManagerMaster(修改Block:broadcast_0_piece0 的信息)
19. spark.SparkContext (在DAGSchduler创建广播)
20. scheduler.DAGScheduler(提交Stage 0的两个missing tasks)
21. scheduler.TaskSchedulerImpl (添加task set)
22. scheduler.TaskSetManager (启动task)
23. executor.Executor(运行task 完成task)
24. scheduler.TaskSetManager(完成task)
25. scheduler.TaskSchedulerImpl(移除task set)
26. scheduler.DAGScheduler(完成 stage 0、job 0)

27. scheduler.DAGScheduler: 停止DAGScheduler
 spark.MapOutputTrackerMasterActor: 停止MapOutputTrackerActor
 storage.MemoryStore: 清理MemoryStore
 storage.BlockManager: 停止BlockManager
storage.BlockManagerMaster: 停止BlockManagerMaster
spark.SparkContext: 成功停止SparkContext


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《用Python动手学机器学习》是一本介绍利用Python编程语言进行机器学习学习的书籍,主要适用于对机器学习感兴趣的初学者。通过阅读这本书,你将了解机器学习的基本概念、算法和工具,并通过Python实践来应用这些知识。 这本书的作者在书中详细介绍了Python中常用的机器学习库,例如NumPy、Pandas和Scikit-learn等。这些库提供了丰富的机器学习算法和工具,方便用户快速应用。书中每个章节都配有实例和练习,可以帮助读者理解和巩固所学的知识。 在《用Python动手学机器学习》这本书中,你将学习到如何使用Python进行数据预处理、特征工程、模型选择和评估。你将学会如何利用Python将数据集进行切分,建立模型并进行训练和预测。同时,书中还将介绍常用的机器学习算法,如线性回归、逻辑回归、决策树和支持向量机等。 此外,书中还提供了一些实际案例,如图像识别和文本分类等。这些案例可以帮助读者将所学的知识应用到实际问题中,并加深对机器学习原理的理解。 总之,《用Python动手学机器学习》这本书通过结合理论和实践,帮助读者掌握机器学习的基本概念和应用,同时也培养了读者使用Python进行机器学习的能力。无论你是初学者还是有一定编程基础的人,这本书都能帮助你轻松入门机器学习,并在实际应用中取得良好的成果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值