spark入门学习

今天了解了一下spark,发现现在的大数据框架真的是太强大了,早年用map-reduce做大数据集计算真的是太low了。

下面记录一下我的浅显理解,主要是帮助大家快速了解spark是干嘛的。

我的初步理解

spark主要解决了很多map-reduce的问题。

以前写map-reduce多轮计算,需要先算出第一轮的结果,再启动第二轮计算,光是这个任务依赖调度就很头疼,更别提中间结果写入HDFS大多情况都是没有意义的。

spark最强的就是支持迭代计算,而且把计算结果做了一个抽象,叫做RDD。

RDD

我理解RDD就是一个抽象概念,比如放在HDFS上的文件可以叫做一个RDD,编程的时候可以加载它(实际上什么也没发生),是一个抽象概念。

对这样一个数据集合,我们在程序里可以写一段函数处理它,处理方式分2类:

  • count/sum等:实际就会触发spark在集群里做一个分布式运算,得到一个结果返回给你的程序调用位置。
  • map/filter/reduce等:也是触发了分布式计算,你的处理函数会被传输到集群里运行,spark会给你输入数据,你的输出会被spark接受到另外一个RDD里(逻辑抽象,至于底层存在分布式集群的内存里还是磁盘上,存在哪些节点上,都不用我们管)。

我们编写的spark程序就是一个导演,先对当前RDD发起一个分布式计算,得到另外一个RDD,然后再对新的RDD发起另外一个分布式计算,就是在写流水账代码。

最后,我们可以利用count/sum这类操作,得到一行结果;也可以让spark把一个RDD写入到HDFS持久化起来,这些底层过程都是集群分布式完成的,我们只是导演而已。

学习资料

通过《Spark官方文档 -Spark快速入门》可以理解spark的编程和工作模式。

通过《Spark入门(Python版)》可以实践一下Python spark编程,加深理解。

等我实践了会再写一篇记录一下过程。

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~