Spark学习笔记五:组件篇

一、Spark Mlib

  • 数据类型
    • 本地向量 Local Vector:密集型、稀疏型
    • 标签点 Labeled Point
      Mlib中的矩阵其实是向量型的RDD
    • 本地矩阵 Local Matrix
    • 分布式矩阵:分布式存储在一个或多个RDD。将一个分布式矩阵转换为另一个不同格式的需要Shuffle
    • 行矩阵:RDD[Vector]
    • 行索引矩阵:RDD[IndexedRow]
    • 三元组矩阵:RDD[MatrixEntry],MatrixEntry是一个Tuple类型的元素,包含行、列、元素值
    • 分块矩阵:支持矩阵分块(MaxtrixBlocks)RDD的分布式矩阵,MatrixBlocks有((Int,Int),Matrix)元祖构成
  • 基本统计方法
    • 汇总统计:Statistics类中,对RDD[Vector]格式数据的列汇总统计
    • 相关性:Pearson、Spearsman(Statistics类的corr方法提供计算)
    • 分层抽样,运行在键值对的RDD上
    • 假设检验:皮尔森卡方检验
    • 随机数据生成:支持指定分布类型的随机RDD生成(如均匀分布、标准正态、泊松分布)
    • 核密度估计(非参数检验方法之一,用来估计未知的密度函数)
    • 流显著性验证:类似于A/B验证的在线实现方法

二、Spark SQL

  • 发展路径
    • Hive是建立在Hadoop上的数据仓库基础架构,提供一系列工具用来进行数据提取转化加载(ETL,可以存储、查询和分析存储在Hadoop中的大规模数据的机制)
      缺点:Hive基于MapReduce进行处理,消耗大量的I/O,大大降低了运行效率
    • Shark,一种优化的SQL on Hadoop工具。停止开发,转向Spark SQL
    • Spark SQL:加速现有Hive数据的查询分析;支持对原生RDD对象进行关系查询
  • DataFrame/Dataset
    与RDD相比:
    • 精简代码
    • 提高执行效率
      • 使用DataFrame API,计算任务大头由JVM端负责;使用RDD API时,存在大量跨进程的数据交换,影响速度
      • 使用DataFrame API尽可能重用对象;使用RDD API在大部分场景下,倾向于创建新对象而不是修改老对象,使得Spark在应用程序运行中倾向创造大量临时对象,对GC造成压力。
        减少数据读取
    • 减少数据读取
      • 利用数据源自身的优化能力来完成列剪枝、过滤条件下推等优化,实现减少I/O、提高执行效率的目的
  • SparkSQL运行架构
  • SQLContext运行原理
  • Hive-Console调试工具
    • 使用Hive-Console调试工具,可以详细查看Spark SQL的运行计划
  • SQLConsole
    • Spark将RDD转换成DataFrame的两种方式:
    1. 通过定义case class:适用于已知Schema的RDD
    2. 通过可编程接口,定义Schema,应用到RDD上(createDataFrame方式):适用于未知Schema的RDD
    • 读取JSON格式数据
    • 读取Parquet格式数据,parquet文件中保留了schema信息,不需要使用case class来隐式转换
    • SparkSQL的缓存
      对于本章,主要是了解Spark SQL支持的基本操作及其使用,作为工具便于在日后的工作中灵活使用。

三、Spark Streaming

  • 相关术语
    • 离散流 DStream,代表持续性的数据流。由一组时间序列上连续的RDD来表示
    • DStreamGraph:DStream的依赖关系保存在DStreamGraph中
    • 批处理间隔:Spark Streaming中,数据采集逐条进行,数据处理按批进行
    • 窗口间隔、滑动间隔
  • 编程模型*
    • 输入:创建DStreams
      • 基础来源:文本数据、文件系统、基于RDD队列
      • 高级来源:需要外部接口(如Kafka、Flume)
    • DStream操作
      • 普通的转换操作
      • 窗口操作
      • 输出操作
    • 运行架构
    • 实例
      书中还介绍了两个实例,分别是:
      • 从文本数据获取数据
      • 从Kafka获取数据

你可能感兴趣的:(分布式,Spark,Mlib,Spark,SQL,Spark,Streaming,图解Spark)