1 数据分析导论
1.1 spark 是什么
1.1.1 特点(内存中计算)
实现了快速而通用的集群计算平台。扩展了MapReduce计算模型,支持更多的计算模式,包括交互处理,批处理,流出来,迭代算法。提供丰富的接口,基于python,scala,java,sql简单应用api。
1.2 spark 组成
Spark SQL 结构化数据,Spark Streaming 实时计算,MLib 机器学习,Gragh X 图计算,Spark Core , 独立调度器 ,YARN ,Mesos
1.2.1 Spark SQL 结构化数据
spark sql 是 spark 用来操作结构化数据的程序包,支持多种数据源(Hive Sql , parquet , json)。与RDD编程的数据操作方式相结合。
1.2.2 Spark Streaming 实时计算
spark streaming 是spark 提供对实时数据进行流失计算的组件(消息队列,服务器日志)。
1.2.3 MLlib 机器学习
MLlib 提供了多种的机器学习算法,分类,回归,聚类,协同过滤等。提供模型评估、数据导入等额外的支持功能
1.2.4 Gragh x 图计算
Gragh x 图计算算法
1.2.5 Spark Core
Spark Core 实现 spark 的基本功能,包含任务调度,内存管理,错误恢复,与存储系统交互模块。对弹性分布式数据集RDD的定义
1.2.6 集群管理器
设计实现可以一个计算结点到几千个计算结点之间伸缩计算,支持各种集群管理器
2 spark 下载与入门
2.1 下载链接
cd ~
tar -xf spark-1.2.0-bin-hadoop2.4.tgz
cd spark-1.2.0-bin-hadoop2.4
ls
/bin :spark交互可执行文件
/core streaming python 主要组件源代码
/examples 可以查看运行的API
2.2 Spark - pySpark与scala的shell
启动命令
bin/pySpark bin/spark-shell
修改日志级别:/conf/log4j.properties log4j.rootCategory=INFO,console=>WARN,console
2.2.1 Scala 行数统计
val lines = sc.textFile("README.md");
lines.count();
lines.first();
退出命令
ctrl + d
2.3 Spark 核心概念
每一个Spark 应用都由一个驱动器程序发起集群上的各种并行操作,驱动器程序包含应用main函数且定义集群上的分布式数据集。驱动程序通过一个SparkContext对象访问spark。这个对象代表着对计算集群的一个连接。shell启动自动创建一个sparkcontext对象。然后就可以创建RDD。然后进行各种操作。比如sc.textFile()
val lines = sc.textFile("README.md");
var pyLines = lines.filter(_.contains("Python"))
pyLines.first();
2.3.1 初始化SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("test")//集群的url,应用名称初始化配置val sc = new SpackContext(conf)//创建RDD
2.3.2 单词统计
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("test")//集群的url,应用名称初始化配置
val sc = new SpackContext(conf)//创建RDD
val input = sc.textFile(inputFile)
val words = input.flatMap(line =>line.split(" "));
val counts = words.map(word=>(word, 1)).reduceByKey{case(x,y) => x+y}