您的位置:首页 > 大数据

Spark快速大数据分析-第一和第二章

2017-06-13 16:14 232 查看
我发现光是NumPy和Pandas其实不太够,找工作都要你会点Linux,懂点Spark和Hadoop,相当尴尬。于是我选择在我的电脑上

安装了VMware,然后安装了CentOS 7。

说到Linux,我在Ubuntu和CentOS 7犹豫了很久,最后决定还是 CentOS 7吧,主要是参考了大家的意见,服务器领域CentOS用的多,当然不一定是7。

《Spark快速大数据分析》这本书挺新的,著名的动物系列书,我觉得可能比较合适我。另外此书据说照顾了JAVA, PYTHON, SCALA三种语言,非常适合大众。

========================================================================================

第一章 Spark数据分析导论

第一章主要就是介绍Spark:一个用来实现快速而通用的集群计算的平台。

然后介绍了诸多组件,Spark Core, Spark SQL, Spark Streaming(实时数据流式计算), MLlib(机器学习), GraphX (图),然后说明其可以在各种集群管理器上面运行。

Spark用途主要分为 数据科学任务 和 数据处理应用。(然后吹了一波)

再来,介绍了Spark的历史,诞生于2009年云云。

===================================================================

下载 Spark:

书上版本是1.2,而截至目前Spark已经是2.1.1了...相当尴尬,希望不要落伍。

如图:



然后下载。

手把手说一下,以 CentOS 7自带的火狐浏览器为例,先去http://spark.apache.org/downloads.html 按上面的设置下载 Spark 的 tgz 压缩包,

然后点击下载历史或者 Ctrl + Shift + Y ,再打开压缩包所在文件夹,右键打开终端即可。

现在,在终端输入:

tar -xf spark-2.1.1-bin-hadoop2.7.tgz
进行解压。

现在可以看见,tgz文件解压成功,文件夹里面出现了同名但是没有tgz后缀的文件。



现在进入这个新文件夹,可以看见很多东西,书上有介绍,这里不说了。



===========================================================================

首先我们打开 Spark Shell。

进入 spark 文件夹,然后在终端输入 bin/pyspark,这是说用python方式打开 Spark Shell。等待一会儿以后就正式进入了!



真刺激。

注意! 2.0+版本的 Spark 已经去掉了 ipython 功能!

=======================================

第一个例子!如下:



爽,看来是成功了。

这里说明一下,RDD是弹性分布式数据集(RDD,Resilient Distributed Datasets)的意思。

这里变量 line 是一个RDD。我们可以在这个RDD上运行各种并行操作,比如统计这个数据集中的元素个数,或者输出第一个元素。

===================================================================================================

驱动程序通过一个 SparkContext 对象来访问Spark,shell 启动的时候自动创建了这么一个对象,是一个叫做sc 的变量。

刚刚创建的sc.textFile()就代表一个文件中各行文本的RDD,我们可以在此进行各种操作,比如count()

我们还可以扩展刚刚的例子,筛选出文件中包含某个特定单词的行。



这里的filter函数好像很重要,不过这里暂时没有介绍,大概猜测就是一个过滤器。以及后面的lambda line 是什么东西?

不过翻页,就介绍了 lambda 语法,这里大概相当于

def hasPython(line):
return "Python" in line

pythonLines = lines.filter(hasPython)


===========================================================
最后,最重要的,我们Python 编程经常需要写成脚本运行,那么我们可以把应用写成脚本,然后使用Spark自带的 bin/spark-submit 脚本运行:

bin/spark-submit my_script.py


实验一下:就在Spark 文件夹下,建立一个新文件 test.txt

第一步,进入文件夹,打开终端。

第二步:键入命令:

vi test
第三步:可以看见进入文本编辑器了,这时候按 i 键对文本内容进行编辑。

第四步:按 ESC 退出编辑模式,输入 :wq   (冒号 + w + q )保存。



第五步:在终端运行脚本,记得把文件名改成py后缀。

运行起来似乎没什么问题,出了很多信息。

# 创建 SparkContext 的最基本方法,只需要传递两个参数
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App")
# 集群URL:local可以让Spark运行在单机单线程上而无需连接到集群
# 应用名:在例子中我们使用的是 My App 。当连接到一个集群时,这个值可以帮助你在集群管理器的用户界面中找到你的应用
sc = SparkContext(conf = conf)


初始化SparkContext 以后,我们可以使用前面的方法,比如文本行统计之类的来创建RDD并且进行操控。

# 创建 SparkContext 的最基本方法,只需要传递两个参数
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App")
# 集群URL:local可以让Spark运行在单机单线程上而无需连接到集群
# 应用名:在例子中我们使用的是 My App 。当连接到一个集群时,这个值可以帮助你在集群管理器的用户界面中找到你的应用
sc = SparkContext(conf = conf)

#使用前面的例子
lines = sc.textFile("README.md")
num = lines.count()

print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print(num)
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")
print("=========================================================")


然后命令行中输入 

bin/spark-submit    test.py

会弹出超多INFO,结果也会正常输出。但是很难看。

所以这里加的很多等号就是方便找结果...
http://spark.apache.org/docs/latest/programming-guide.html 这里有参考
https://stackoverflow.com/questions/30763951/spark-context-sc-not-defined
去掉INFO参考:http://www.aboutyun.com/forum.php?mod=viewthread&tid=18519
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  大数据 spark python