Spark
HelloWorld闯天涯
这个作者很懒,什么都没留下…
展开
-
Spark(五)--Structured Streaming(六) - 有状态算子
目录6. 有状态算子6.1 状态6.2 常规算子6.2.1 案例6.2.2 总结6.3 分组算子6.3.1 案例6.3.2 总结6. 有状态算子目标了解常见的Structured Streaming算子, 能够完成常见的流式计算需求步骤 常规算子 分组算子 输出模式 6.1 状态6.1.1 无状态算子...原创 2019-10-22 11:25:30 · 1023 阅读 · 0 评论 -
Spark(五)--Structured Streaming(五) - Sink
目录5.1 HDFS Sink5.1.1 场景和需求5.1.2 代码实现5.2 Kafka Sink5.2.1 场景5.2.2 代码5.3 Foreach Writer5.3.1 需求5.3.2 代码5.4 自定义 Sink5.4.1 Spark 加载 Sink 流程分析5.4.2 自定义 Sink5.5 Tigger5.5.1 微批次处理...原创 2019-10-22 11:15:45 · 1626 阅读 · 1 评论 -
Spark(五)--Structured Streaming(四) - Source - Kafka
5. 从 Kafka 中读取数据目标通过本章节的学习, 便可以理解流式系统和队列间的关系, 同时能够编写代码从Kafka以流的方式读取数据步骤 Kafka回顾 Structured Streaming整合Kafka 读取JSON格式的内容 读取多个Topic的数据 5.1 Kafka 的场景和结构目标通过这一个小...原创 2019-10-22 10:10:08 · 625 阅读 · 1 评论 -
Spark(五)--Structured Streaming(四) - Source - HDFS
目录4. 从 HDFS 中读取数据4.1 案例结构介绍4.1.1 场景介绍4.1.2 案例介绍4.1.3 实现步骤4.1.4 难点和易错点4.1.5 总结4.2 产生小文件并推送到 HDFS4.3 流式计算统计 HDFS 上的小文件4.4 运行和流程总结4.4.1 运行 Python 程序4.4.2 运行 Spark 程序4.5 总结4. 从...原创 2019-10-22 09:36:49 · 638 阅读 · 1 评论 -
Spark(五)--Structured Streaming(三) - 体系和结构
3. Stuctured Streaming 的体系和结构目标了解 Structured Streaming 的体系结构和核心原理, 有两点好处, 一是需要了解原理才好进行性能调优, 二是了解原理后, 才能理解代码执行流程, 从而更好的记忆, 也做到知其然更知其所以然步骤WordCount 的执行原理Structured Streaming 的体系结构3.1 无限扩展的表格...原创 2019-10-21 16:49:15 · 507 阅读 · 0 评论 -
Spark(五)--Structured Streaming(二) - 入门案例
2. Structured Streaming 入门案例目标了解Structured Streaming的编程模型, 为理解Structured Streaming时候是什么, 以及核心体系原理打下基础步骤 需求梳理 Structured Streaming代码实现 运行 验证结果 2.1 需求梳理目标理解接下来要做的案...原创 2019-10-21 16:34:55 · 361 阅读 · 0 评论 -
Spark(五)-- Structured Streaming(一) - 回顾
目录1. Spark 编程模型的进化过程1.1 Spark 编程模型的进化过程1.2 Spark 的 序列化 的进化过程Step 1: 什么是序列化和序列化Step 2: 在Spark中的序列化和反序列化的应用场景Step 3:RDD的序列化Step 4:DataFrame和Dataset中的序列化1.3 总结1. Spark 编程模型的进化过程...原创 2019-10-21 16:26:54 · 482 阅读 · 1 评论 -
Spark(四)-- SparkStreaming操作 (三)
导读这一小节主要目的是为了了解Spark Streaming一些特别特殊和重要的操作, 一些基本操作基本类似RDD1.updateStateByKey1.1 需求: 统计整个流中, 所有出现的单词数量, 而不是一个批中的数量使用中间状态实现统计功能 统计总数 入门案例中, 只能统计某个时间段内的单词数量, 因为reduceByKey只能作用于某一个RDD,...原创 2019-10-21 15:37:44 · 222 阅读 · 0 评论 -
Spark(四)-- SparkStreaming原理 (二)
目录1.总章1.1 Spark Streaming的特点1.2 Spark Streaming是按照时间切分小批量1.2.1 如何小批量?1.2.2 如何处理数据?1.3 Spark Streaming是流计算, 流计算的数据是无限的1.4 总结2.DAG的定义2.1 RDD和DStream的DAG(有向无环图)2.2 RDD和DStre...原创 2019-10-21 15:29:31 · 682 阅读 · 0 评论 -
Spark(四)-- SparkStreaming入门 (一)
1.简介SaprkStreaming是一种微批次的流计算框架,主要用于近实时计算特点 说明 Spark Streaming是Spark Core API的扩展 Spark Streaming具有类似RDD的API, 易于使用, 并可和现有系统共用相似代码 一个非常重要的特点是,Spark Stre...原创 2019-10-21 14:48:59 · 340 阅读 · 0 评论 -
Spark(三)-- SparkSQL项目练习
导读本项目是 SparkSQL 阶段的练习项目, 主要目的是夯实同学们对于 SparkSQL 的理解和使用数据集2013年纽约市出租车乘车记录需求统计出租车利用率, 到某个目的地后, 出租车等待下一个客人的间隔1.项目说明现在有2013年纽约市出租车乘车记录表,表中字段如下:字段 示例 示意 hack_license ...原创 2019-10-21 13:55:06 · 1128 阅读 · 1 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- 窗口函数(六)
目录12. 窗口函数12.1 第一名和第二名案例12.1.1 需求介绍12.1.2 需求分析12.1.3 代码编写12.1.4 总结12.2 窗口函数12.2.1 窗口函数的逻辑12.2.2 窗口定义部分12.2.3 函数部分12.2.4 总结12.3 最优差值案例12.3.1 需求介绍12.3.2 代码实现12. 窗口函数目标...原创 2019-10-21 09:57:44 · 491 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- 连接(五)
目录11.连接11.1 无类型连接算子join的API11.2 连接类型11.2.1 交叉连接 - cross交叉11.2.2 内连接 - inner11.2.3 全外连接11.2.4 左外连接11.2.5 LeftAnti - 只包含左边集合中没连接上的数据11.2.6 LeftSemi - 只包含左侧集合中连接上的数据11.2.7 右外连接11...原创 2019-10-21 09:02:19 · 928 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- 聚合(四)
10. 聚合导读 groupBy rollup cube pivot RelationalGroupedDataset上的聚合操作 10.1 groupBygroupBy算子会按照列将Dataset分组, 并返回一个RelationalGroupedDataset对象, 通过RelationalGroupedDatase...原创 2019-10-18 11:13:25 · 1169 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- 缺失值处理(三)
9.缺失值的处理导读 DataFrame中什么时候会有无效值 DataFrame如何处理无效的值 DataFrame如何处理null 9.1 缺失值的处理思路如果想探究如何处理无效值, 首先要知道无效值从哪来, 从而分析可能产生的无效值有哪些类型, 在分别去看如何处理无效值什么是缺失值一个值本身的含义是这个值不存在则称之为缺失值, 也就是...原创 2019-10-18 10:36:50 · 3674 阅读 · 0 评论 -
Spark(二)-- SparkCore扩展 (二) -- RDD算子
目录2.RDD算子2.1 Transformations 算子2.1.1 map: map(T ⇒ U)2.1.2 flatMap(T ⇒ List[U])2.1.3 filter(T ⇒ Boolean)2.1.4 mapPartitions(List[T] ⇒ List[U])2.1.5 mapPartitionsWithIndex2.1.6 mapValues...原创 2019-09-10 11:22:51 · 395 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据读写) -- 访问Hive(三)
7.5 访问 Hive导读 整合SparkSQL和Hive, 使用Hive的MetaStore元信息库 使用SparkSQL查询Hive表 案例, 使用常见HiveSQL 写入内容到Hive表 7.5.1 SparkSQL 整合 Hive导读 开启Hive的MetaStore独立进程 整合...原创 2019-09-26 09:42:57 · 540 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据读写) -- JDBC(四)
7.6 JDBC导读 通过SQL操作MySQL的表 将数据写入MySQL的表中 (1)准备MySQL环境在使用SparkSQL访问MySQL之前, 要对MySQL进行一些操作, 例如说创建用户, 表和库等 Step 1: 连接MySQL数据库 在MySQL所在的主机上执行如下命令 mysql -u root -p...原创 2019-09-26 10:31:57 · 894 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- 转换操作(一)
目录8. Dataset (DataFrame) 的基础操作8.1 有类型操作8.1.1 转换类型的操作8.1.2 过滤类型的操作8.1.3 集合类型的操作8.1.4 切分类型的操作8.1.5 排序类型的操作8.1.6 分区类型的操作8.1.7 去重类型的操作8.1.8 集合类型的操作8.2 无类型操作8.2.1 选择类型的操作8.2.2 剪切类...原创 2019-09-30 16:09:31 · 891 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据操作) -- Column(二)
目录8.3 Column 对象8.3.1 列的创建8.3.2 列的别名和转换8.3.3 添加列8.3.4 其它8.3 Column 对象导读Column 表示了 Dataset 中的一个列, 并且可以持有一个表达式, 这个表达式作用于每一条数据, 对每条数据都生成一个值, 之所以有单独这样的一个章节是因为列的操作属于细节, 但是又比较常见, 会在很多算子中配合出现...原创 2019-09-30 16:41:04 · 2450 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据读写) -- 读写 Parquet、Json 格式文件(二)
7.3 读写 Parquet 格式文件目标 理解Spark读写Parquet文件的语法 理解Spark读写Parquet文件的时候对于分区的处理 什么时候会用到Parquet?在ETL中,Spark经常扮演T的职务, 也就是进行数据清洗和数据转换.为了能够保存比较复杂的数据, 并且保证性能和压缩率, 通常使用Parquet...原创 2019-09-26 09:30:15 · 1547 阅读 · 0 评论 -
Spark(三)-- SparkSQL扩展(数据读写) --DataFrameReader和DataFrameWriter(一)
7.1 初识 DataFrameReader目标理解DataFrameReader的整体结构和组成SparkSQL的一个非常重要的目标就是完善数据读取, 所以SparkSQL中增加了一个新的框架, 专门用于读取外部数据源, 叫做DataFrameReader @Test def reader1() : Unit = { //1.创建SparkSess...原创 2019-09-26 09:05:51 · 4224 阅读 · 1 评论 -
Spark(二)-- Spark 底层逻辑 (六) -- 简介
6. Spark 底层逻辑 -- 简介导读 从部署图了解Spark部署了什么, 有什么组件运行在集群中 通过对WordCount案例的解剖, 来理解执行逻辑计划的生成 通过对逻辑执行计划的细化, 理解如何生成物理计划 如无特殊说明, 以下部分均针对于 Spark Standalone 进行介绍通过wordCount案例来从“部署情况”、“逻辑执行...原创 2019-09-17 10:03:02 · 293 阅读 · 0 评论 -
Spark(二)-- SparkCore扩展 (五) -- Checkpoint
5. Checkpoint目标 Checkpoint 的作用 Checkpoint 的使用 5.1 Checkpoint 的作用Checkpoint 的主要作用是斩断 RDD 的依赖链, 并且将数据存储在可靠的存储引擎中, 例如支持分布式存储和副本机制的 HDFS.Checkpoint 的方式 可靠的将数据存储在可靠的存储引擎中, 例如 HDFS ...原创 2019-09-16 09:29:56 · 353 阅读 · 0 评论 -
Spark(二)-- SparkCore扩展 (四) -- 缓存
目录4. 缓存4.1 缓存的意义使用缓存的原因 - 多次使用 RDD使用缓存的原因 - 容错4.2 缓存相关的 API可以使用cache方法进行缓存也可以使用 persist 方法进行缓存4.3 缓存级别4. 缓存概要 缓存的意义 缓存相关的 API 缓存级别以及最佳实践 4.1 缓存的意义使用缓存的原因 - 多次...原创 2019-09-16 09:21:36 · 308 阅读 · 0 评论 -
Spark(二)-- SparkCore扩展 (三) -- RDD 的 Shuffle 和分区
目录3.RDD 的 Shuffle 和分区3.1 RDD 的分区操作查看分区数创建 RDD 时指定分区数3.2 RDD 的 Shuffle 是什么3.3 RDD 的 Shuffle 原理Hash base shuffleSort base shuffle3.RDD 的 Shuffle 和分区目标 RDD 的分区操作 Shuffle 的原理...原创 2019-09-12 09:06:18 · 550 阅读 · 0 评论 -
Spark(二)-- SparkCore扩展 (一) -- 深入RDD
目录1. 深入 RDD1.1 案例1.2 再谈 RDD1.2.1 RDD 为什么会出现?1.2.2 RDD 的特点1.2.3 什么叫做弹性分布式数据集1. 深入 RDD目标1.深入理解 RDD 的内在逻辑, 以及 RDD 的内部属性(RDD 由什么组成)1.1 案例需求 给定一个网站的访问记录, 俗称 Access log 计算其中...原创 2019-09-08 13:03:33 · 338 阅读 · 0 评论 -
Spark(一)-- SparkCore(四) -- RDD入门
目录4. RDD 入门4.1 RDD 是什么4.2 RDD 的分区4.3 创建 RDD4.3.1 通过本地集合直接创建 RDD4.3.2 通过读取外部文件创建 RDD4.3.3 通过其它的 RDD 衍生新的 RDD4.4 RDD 算子4.4.1 Map 算子4.4.2 FlatMap 算子4.4.3 ReduceByKey 算子4. RDD 入门...原创 2019-09-05 22:32:29 · 417 阅读 · 0 评论 -
Spark(一)-- SparkCore(三) -- Spark入门
目录3. Spark 入门3.1 Spark shell 的方式编写 WordCount3.2 读取 HDFS 上的文件3.3 编写独立应用提交 Spark 任务3. Spark 入门目标 通过理解 Spark 小案例, 来理解 Spark 应用 理解编写 Spark 程序的两种常见方式 spark-shell 适合于数据集的探索和测试 ...原创 2019-09-04 22:28:25 · 423 阅读 · 0 评论 -
Spark(一)-- SparkCore(二) -- Spark 集群搭建
目录2. Spark 集群搭建2.1. Spark 集群结构2.2 Spark 集群搭建2.3 Spark 集群高可用搭建2.4 第一个应用的运行2. Spark 集群搭建目标 从 Spark 的集群架构开始, 理解分布式环境, 以及 Spark 的运行原理 理解 Spark 的集群搭建, 包括高可用的搭建方式 2.1. Spark 集群结构...原创 2019-09-04 21:27:59 · 381 阅读 · 0 评论 -
Spark(二)-- Spark 底层逻辑 (六) -- 逻辑执行图生成(一)
目录6.1 逻辑执行图生成6.1.1 RDD 的生成textFile算子的背后map算子的背后flatMap算子的背后6.1.2 RDD 之间的依赖关系什么是RDD之间的依赖关系?reduceByKey算子会生成ShuffledRDD整体上的流程图6.1.3 RDD 之间的依赖关系详解窄依赖宽依赖如何分辨宽窄依赖 ?6.1.4 ...原创 2019-09-17 16:22:30 · 575 阅读 · 1 评论 -
Spark(二)-- Spark 底层逻辑 (六) -- 物理执行图生成(二)
目录6.2 物理执行图生成6.2.1 物理图的作用是什么?问题一: 物理图的意义是什么?问题二: 如果要确定如何运行的问题, 则需要先确定集群中有什么组件?问题三: 物理图的生成需要考虑什么问题?6.2.2 谁来计算 RDD ?问题一: RDD 是什么, 用来做什么 ?问题二: 谁来计算 ?问题三: Task 该如何设计 ?6.2.3 如何划分阶段 ?6...原创 2019-09-18 09:34:06 · 490 阅读 · 0 评论 -
Spark(三)-- SparkSQL(三) -- Dataset和DataFrame
目录4. Dataset 的特点4.1 Dataset是什么?4.2 即使使用Dataset的命令式API, 执行计划也依然会被优化4.3 Dataset的底层是什么?4.4 可以获取Dataset对应的RDD表示5. DataFrame 的作用和常见操作5.1 DataFrame是什么?5.2 通过隐式转换创建DataFrame5.3 通...原创 2019-09-23 10:09:52 · 439 阅读 · 0 评论 -
Spark(三)-- SparkSQL(二) -- Catalyst 优化器
目录3. Catalyst 优化器3.1 RDD 和 SparkSQL 运行时的区别3.2 Catalyst3. Catalyst 优化器目标 理解SparkSQL和以RDD为代表的SparkCore最大的区别 理解优化器的运行原理和作用 3.1 RDD 和 SparkSQL 运行时的区别RDD的运行流程大致运行步骤先将...原创 2019-09-23 09:51:12 · 772 阅读 · 0 评论 -
Spark(三)-- SparkSQL(一) -- 初识
目录1. SparkSQL 是什么1.1 SparkSQL 的出现契机数据分析的方式HiveSharkSparkSQL1.2 SparkSQL 的适用场景结构化数据半结构化数据2. SparkSQL 初体验2.1 RDD 版本的 WordCount2.2 命令式 API 的入门案例SparkSessionDataFrame & Dat...原创 2019-09-23 09:15:23 · 1048 阅读 · 0 评论 -
Spark(二)-- RDD 的分布式共享变量(八) -- 广播变量(二)
目录7.2 广播变量7.2.1 广播变量的作用7.2.2 广播变量的API7.2.2.1 使用广播变量的一般套路7.2.2.2 使用value方法的注意点7.2.2.3 使用destroy方法的注意点7.2.3 广播变量的使用场景7.2.4 扩展7.2 广播变量目标 理解为什么需要广播变量, 以及其应用场景 能够通过代码使用广播变量...原创 2019-09-19 09:31:32 · 572 阅读 · 0 评论 -
Spark(二)-- RDD 的分布式共享变量(八) -- 累加器(一)
7.1. 累加器一个小问题var count = 0val config = new SparkConf().setAppName("ip_ana").setMaster("local[6]")val sc = new SparkContext(config)sc.parallelize(Seq(1, 2, 3, 4, 5)) .foreach(count += _)p...原创 2019-09-19 09:28:10 · 417 阅读 · 0 评论 -
Spark(二)-- 闭包(七)
什么是闭包?闭包是一个必须要理解, 但是又不太好理解的知识点, 先看一个小例子/** * 闭包相关 */class Closure { /** * 编写一个高阶函数,在函数内要有一个变量,返回一个函数,用过这个变量完成一个计算 */ @Test def test():Unit ={ val f: Int => Double = clo...原创 2019-09-19 09:20:55 · 197 阅读 · 0 评论 -
Spark(二)-- Spark 底层逻辑 (六) -- Shuffle 过程(四)
目录6.4 Shuffle 过程6.4.1 Shuffle过程的组件结构6.4.2 有哪些ShuffleWriter?6.4.3 SortShuffleWriter的执行过程6.4 Shuffle 过程导读本章节重点是介绍Shuffle的流程, 因为根据ShuffleWriter的实现不同, 其过程也不同, 所以前半部分根据默认的存储引擎SortSh...原创 2019-09-19 09:14:11 · 294 阅读 · 0 评论 -
Spark(二)-- Spark 底层逻辑 (六) -- 调度过程(三)
目录6.3 调度过程6.3.1 逻辑图(1)逻辑图如何生成(2)逻辑图是什么, 干啥用6.3.2 物理图6.3.3 Job是什么 ?(1)Job什么时候生成 ?(2)Job是什么 ?6.3.4 Job和Stage的关系(1)为什么Job需要切分 ?(2)如何切分 ?(3)问题一: 执行顺序(4)问题二: 串行还是并行(5)总结...原创 2019-09-19 08:59:01 · 142 阅读 · 0 评论