BDAS 伯克利数据分析栈

1.spark的基础内容

2.spark机器学习

3.spark图挖掘

4.spark深度学习

5.alluxio系统介绍

 

1.spark与bdas

hadoop源于google,时间为2004-2006的3个论文。spark生于加州大学伯克利分析的AMP实验室 2009 spark正式发布

到2012年spark有0.6版本。AMP 于2016关闭,重新建立RISE实验室 riselab

bdas伯克利数据分析栈

spark生态圈的目标是成为大数据的工业标准

1.2 databricks

Databricks与基于Hadoop做的商用化的Cloudera和Hontworks有异曲同工

1.3 spark 是开源的

1.4 spark的编译语言

5种语言比较图

作为Spark的原生语言,简洁的语法,

java也是原生的语言,但java语法冗长 1.8后才支持函数式编程,但java程序员基数大,javaApi对于用户来说无疑比较友好。

建议Spark学习用自己熟悉的语言

1.5函数式编程思想

scala很多特性与spark本身的概念非常契合,可以用天生一对来形容。

函数式编程属于声明式编程,与其对应的是命令式编程,命令式编程就是按照“程序是一系列改变状态的命令”来建模的一种建模风格,而函数式编程思想是“程序是表达式和变换,以数学方程的形式建立模型,并且尽可能的避免可变状态”,函数式编程会有一些类别的操作,如映射、过滤、归约,每一种都有不同的函数作为代表如filter,map,reduce 这些函数实现的是低阶变换,而用户定义的函数将作为这些函数的参数来实现整个方程,用户自定义的函数为高阶变换。

来看看scala的函数式

val familiyNames = List("aaa","bbb","c","ccc")

println(familyNames.filter(p=>p.length()>1).map(f=>f.capitalize).reduce(a,b)=>a+","+b).toString())

从这个例子我们可以看出,在命令式编程的版本中,只执行了一次循环,在函数式编程的版本里,循环执行了3次(filter、map、reduce),每一次只完成一种逻辑(用户编写的匿名函数),从性能上来说,当然前者更为优秀,这说明了在硬件性能羸弱时,函数式的缺点会被放大,但我们也看到了,在函数式编程的版本不用维护外部状态i,这对于并行计算场景非常友好。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐