Spark进行大数据处理 (一)

什么是Spark

Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。

 

Spark 系统组成



除了Spark核心API之外,Spark生态系统中还包括其他附加库,可以在大数据分析和机器学习领域提供更多的能力。

这些库包括:

  • Spark Streaming:
    • Spark Streaming基于微批量方式的计算和处理,可以用于处理实时的流数据。它使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。
  • Spark SQL:
    • Spark SQL可以通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用Spark SQL对不同格式的数据(如JSON,Parquet以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。
  • Spark MLlib:
    • MLlib是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。
  • Spark GraphX:
    • GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。

Spark有哪些优势

与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:

1、Spark为我们提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

2、Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。

3、可以快速的用Java、Scala或Python编写Spark程序。

4、除了Map和Reduce操作之外,它还支持SQL查询,流数据,机器学习和图表数据处理。

Spark应用举例

// 创建StreamingContext,1秒一个批次
val ssc = new StreamingContext(sparkConf, Seconds(1));

// 获得一个DStream负责连接 监听端口:地址
val lines = ssc.socketTextStream(serverIP, serverPort);

// 对每一行数据执行Split操作
val words = lines.flatMap(_.split(" "));
// 统计word的数量
val pairs = words.map(word => (word, 1));
val wordCounts = pairs.reduceByKey(_ + _);

// 输出结果
wordCounts.print();

ssc.start();             // 开始
ssc.awaitTermination();  // 计算完毕退出
// 创建Spark SQLContext
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// 创建一个DataFrame
val dataFrame = sqlContext.read.json("/user/razor/event_conversion.log")

// 展示dataFrame中的内容
dataFrame.show()

// 树形结构展示dataFrame中存在的字段和数据类型
dataFrame.printSchema()

// 从dataFrame中查询event_identifier列
dataFrame.select("event_identifier").show()

Spark MLlb/ Graphx的应用和Spark streaming/ Spark SQL在生产环境大数据系统的应用请关注后续介绍

 

猜你喜欢

转载自oitebody.iteye.com/blog/2277123