1、Spark简介和 Mllib机器学习库入门目录RDD特性前言 示例Spark简 介算子谢谢 !目录RDD特性前言 示例Spark简 介算子谢谢 !你 能区分么?1数据挖掘数据分析数据研发?Hive、数据仓库、多维分析等Mapreduce离线处理、 storm流处理等机器学习库( sklearn、 mahout、 Mllib等)和其他目录RDD特性前言示例Spark简 介算子谢谢 !目录RDD特性前言 示例Spark简 介算子谢谢 !功能组件库 :Spark StreamingDataFrames and SQLMllib( Machine Learning)GraphX( Graph Proc
2、essing)Bagel( Pregel on Spark)SparkR( R on Spark)支持语言:ScalaJavaPythonRBDAS 伯克利数据分析协议栈可以直接读取 hdfs等分布式文件系统上存储的数据Spark vs. MapReduce 迭代计算。在这个场景下, Hadoop需要多次读写 HDFS(磁盘),造成了大量的 IO和序列化、反序列化等额外开销。此外,每次写 HDFS都 需要 备份 , 因此造成了备份方面的开销 。 HDFS同批数据的多维度查询。对HDFS同一批数据做成百或上千维度查询时, Hadoop每次做一个独立的 query,也就是每次都要从磁盘读取这个数据
3、。因为每次都从磁盘中读取同一组数据,效率显然可以继续提高 。 而在这两种场景中, Spark可以使用内存缓存中间 /常用数据,从而在避免磁盘 IO开销的同时,还将大幅度提高性能。Hadoop写数据时,默认备份几份?RDD特性示例Spark简 介算子谢谢 !前言目录目录RDD特性前言 示例Spark简 介算子谢谢 !RDD的产生RDDs can only be created through deterministic operations on either (1) data in stable storage or (2) other RDDs.示例:RDD: narrow / wide d
4、ependenciesnarrow dependencies, where each partition of the parent RDD is used by at most one partition of the child RDD;wide dependencies, where multiple child partitions may depend on it.Question:Narrow WideRDD容错首先, narrow dependencies可以支持在同一个 cluster node上以管道形式执行多条命令,例如在执行了 map后,紧接着执行 filter。相反,
5、wide dependencies需要所有的父分区都是可用的,可能还需要调用类似 MapReduce之类的操作进行跨节点传递。其次,则是从失败恢复的角度考虑。 narrow dependencies的失败恢复更有效,因为它只需要重新计算丢失的 parent partition即可,而且可以并行地在不同节点进行重计算。而 wide dependencies牵涉到 RDD各级的多个 Parent Partitions。下图说明了 narrow dependencies与 wide dependencies之间的区别:RDD包含信息 a set of partitions, which are at
6、omic pieces of the dataset a set of dependencies on parent RDDs a function for computing the dataset based on its parents metadata about its partitioning scheme and dataplacement目录前言 示例Spark简 介算子谢谢 !RDD特性目录RDD特性前言 示例Spark简 介算子谢谢 !transformationmapflatMapfilterreduceByKeyaction 无输出: foreach HDFS: sav
7、eAsTextFile、 saveAsObjectFile Scala集合和数据类型: collect、 count、 reduce reduce: reduce将 RDD中元素两两传递给输入函数,同时产生一个新的值,新产生的值与 RDD中下一个元素再被传递给输入函数直到最后只有一个值为止 。例子:目录前言 示例Spark简 介算子谢谢 !RDD特性目录RDD特性前言 示例Spark简 介算子谢谢 !Talk is cheap, show me the code.word countQuestion:Word count中首先要对每一行文字按照分隔符分开,根据前面讲的 transform算子,需要用 map还是 flatMap? 即:Val lines = sc.textFile(file:/)Val words = lines.map(_.split(“ ”)还是 Val words = lines.flatMap(_.split(“ ”) ?mllibkMeansQuestion:聚类算法 kMeans伪代码?kMeanskMeans目录前言示例Spark简 介算子谢谢 !RDD特性目录RDD特性前言 示例Spark简 介算子谢谢 !