spark 基础篇伯克利数据分析栈
BDAS 伯克利数据分析栈1.spark的基础内容2.spark机器学习3.spark图挖掘4.spark深度学习5.alluxio系统介绍1.spark与bdashadoop源于google,时间为2004-2006的3个论文。spark生于加州大学伯克利分析的AMP实验室 2009 spark正式发布到2012年spark有0.6版本。AMP 于2016关闭,重新建立RISE实验室 risel
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的编译语言
- Scala
- Java
- Python
- SQL
- R
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,这对于并行计算场景非常友好。
更多推荐
所有评论(0)