Spark简介和RDD基本命令

1.Spark概念和特点

Spark是什么

  1. Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎
  2. 是开源的,基于内存计算的大数据并行计算框架
  3. 由UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室) 开发
  4. 拥有Hadoop MapReduce的优点, 同时避免读写HDFS

Spark和Hadoop MR的关系

  1. Spark 启用了内存分布数据集,提供交互式查询,优化迭代工作负载
  2. Hadoop MR在map端需要将输出写入文件,产生大量的读写操作,不支持交互,仅提供批处理方式
  3. Spark基于Scala语言,这是一种面向函数语言,更便于操作分布式数据集
  4. Hadoop MR基于Java语言,编程难度大,开发效率低
  5. Spark可以看作Hadoop的补充,通过YARN管理集群,操作HDFS上存储的数据

Spark优点

  1. 速度: 使用DAG(有向无环图)执行引擎; 内存计算比Hadoop快100倍,磁盘计算也要比Hadoop快
  2. 易用: RDD提供了80多个高级运算符(算子),支持交互式查询和复杂算法;支持多种语言, 包括Java,Python,R,Scala和Scala Shell交互式编程
  3. 通用: 丰富的库, 包括SQL,MLib,GraphX,Streaming; 丰富的API接口;
  4. 简洁: 不必像Hadoop那样同时维护多个工具
  5. 运行: 既可独立运行,也可与Hadoop结合, 支持访问HDFS,Hive,HBase等数据源

Spark组件

  1. Core; 核心,实现RDD,API等相关操作,是其他组件的基础
  2. SQL: 基于HiveQL与Spark交互的API,其中一个数据库表看作一个RDD
  3. Streaming: 对实时数据流进行处理和控制,以RDD的方式
  4. MLib: 常用的机器学习算法库, 将算法的实现转为对RDD的操作
  5. GraphX: 实现控制图、创建子图、访问路径上所有顶点等操作

Spark基本运行架构

  1. 包含Spark上下文的驱动
  2. 集群资源管理器
  3. 工作节点
  4. 任务控制节点
  5. 具体任务执行进程
    运行架构

2. RDD概念和特点

RDD是什么

  1. Resilient Distributed Datasets 弹性分布式数据集
  2. 分布式内存的抽象概念,提供高度受限的共享内存模型

RDD特点

  1. 只读不可改
  2. 元素可以为键值对或其他数据
  3. 函数包括转换Transformations和动作Actions 两类
  4. 可基于HDFS文件,本地文件,并行集合,JSON文件等多种方式创建
  5. 延迟计算(懒加载): 转换不执行计算,动作才执行计算;运行时优化提高性能

RDD操作分类

  1. 转换: 旧RDD转换为新RDD, RDD不可改,只能生成新RDD
  2. 动作: 对RDD进行计算返回结果

3. RDD基本命令

WordCount

  1. sc上下文调用textFile方法打开HDFS上的文件
  2. flatMap按空格全部切割后返回字符串集合
  3. map将每个字符串加入元组(单词,1)
  4. reduceByKey完成按key分组后的值累加操作
  5. sortBy按值降序排序,完成wordcount
  6. collect将RDD转为集合的动作函数,此时执行计算,最终foreach打印所有元素
sc.textFile("hdfs://ghym:9000/word.txt").flatMap(_.split("\\s+")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect.foreach(println)

猜你喜欢

转载自blog.csdn.net/wxfghy/article/details/80911313