Structured_Source_HDFS_案例介绍 | 学习笔记

简介: 快速学习 Structured_Source_HDFS_案例介绍

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Structured_Source_HDFS_案例介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/692/detail/12148


Structured_Source_HDFS_案例介绍

内容介绍:

一、目标和过程

二、案例结构

三、总结

 

一、目标和过程

1.目标

在数据处理的时候,经常会遇到这样的场景

image.png

数据从 MySQL 产生,用 Sqoop 收集到 HDFS 中,使用 Structured Steaming 从 HDFS 中读取文件,放入 HBase 中。

也会遇到这样的情景

image.png

Nginx  产生一系列的 log ,通过 Flume 收集,Nginx logs 产生多个文件,经过Flume 放入 HDFS 中,增量以新文件的形式存入 HDFS 中,使用 Structured Steaming 从 HDFS 中读取,放入 HBase 中。

以上两种场景有两个共同的特点。

(1)会产生大量小文件在 HDFS 上

(2)数据需要处理

通过学习,能够更深刻地理解这种结构,具有使用 Structured Streaming 整合  HDFS,从其中读取数据的能力。

2.步骤

(1)案例结构

(2)产生小文件并推送到 HDFS

(3)流式计算统计 HDFS 上的小文件

(4)运行和总结

 

二、案例结构

1.目标

通过学习了解案例的过程和步骤,以及案例的核心意图

2.步骤

(1)案例结构

(2)实现步骤

(3)难点和易错点

3.案例流程

image.png

(1)编写 Python 小程序,在某个目录生成大量小文件

Python 是解释型语言,其程序可以直接使用命令运行无需编译,所以适合编写快速使用的程序,很多时候也使用 Python 代替 Shell

使用 Python 程序创建新的文件,并且固定地生成一段 JSON 文本写入文件

在真实的环境中,数据也是一样的不断产生并且被放入 HDFS 中,但是在真实场景下,可能是 Flume 把小文件不断上传到 HDFS 中,也可能是 Sqoop 增量更新不断在某个目录中上传小文件

(2)使用 Structured Streaming 汇总数据

HDFS 中的数据是不断地产生的,所以也是流式的数据

数据集是 JSON 格式,要有解析 JSON 的能力

因为数据是重复的,要对全局的流数据进行汇总和去重,其实真实场景下的数据清洗大部分情况下也是要去重的

(3)使用控制台展示数据

最终的数据结果以表的形式呈现

使用控制台展示数据意味着不需要在修改展示数据的代码,将 Sink 部分的内容放在下一个大章节去说明

真实的工作中,可能数据是要落地到 MySQL ,HBase ,HDFS 这样的存储系统中

4.实现步骤

step 1:编写 Python 脚本不断地产生数据

(1)使用 Python 创建字符串保存文件中要保存的数据

(2)创建文件并写入文件内容

(3)使用 Python 调用系统 HDFS 命令上传文件

step 2:编写 Structured Streaming 程序处理数据

(1)创建 SparkSession

(2)使用 SparkSession 的 readStream 读取数据源

(3)使用 Dataset 操作数据,只需要去重

(4)使用 Dataset 的 writeStream 设置 Sink 将数据展示在控制台中

Step 3:部署程序,验证结果

(1)上传脚本到服务器中,使用 python 命令运行脚本

(2)开启流计算应用,读取 HDFS 中对应目录的数据

(3)查看运行结果

5. 难点和易错点

(1)在读取 HDFS 的文件时,Source 不仅对接数据源,也负责反序列化数据源中传过来的数据心

Source 可以从不同的数据源中读取数据,如 Kafka ,HDFS

数据源可能会传过来不同的数据格式,如 JSON ,Parquet

(2)读取 HDFS 文件的这个 Source 叫做 FileStreamSource

从命名就可以看出来这个 Source 不仅支持 HDFS ,还支持本地文件读取,亚马逊云,阿里云等文件系统的读取,例如: file://, s3: //, oss : //

(3)基于流的 Dataset 操作和基于静态数据集的 Dataset 操作是一致的

 

三、总结

1.整个案例运行的逻辑

(1) Python 程序产生数据到 HDFS中

(2) Structured Streaming 从 HDFS中获取数据

(3) Structured Sereaming 处理数据

(4)将数据展示在控制台

2.整个案例的编写步骤

(1) Python 程序

(2) Structured Streaming 程序

(3)运行

相关文章
|
9月前
|
存储 分布式计算 负载均衡
Hadoop学习笔记(二)之HDFS
Hadoop学习笔记(二)之HDFS
|
1月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
184 2
|
1月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
132 7
|
1月前
|
存储 Linux
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
118 1
|
1月前
|
存储 机器学习/深度学习 分布式计算
Hadoop学习笔记(HDP)-Part.12 安装HDFS
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
87 0
Hadoop学习笔记(HDP)-Part.12 安装HDFS
|
1月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
336 0
|
机器学习/深度学习 移动开发 分布式计算
配置 HDFS-配置 core-site-hdfs-size 以及 env.sh 等配置文件|学习笔记
快速学习配置 HDFS-配置 core-site-hdfs-size 以及 env.sh 等配置文件
367 0
|
消息中间件 数据采集 缓存
2-网站日志分析案例-日志采集:Flume-Kafka-Flume-HDFS
文章目录 2-网站日志分析案例-日志采集:Flume-Kafka-Flume-HDFS 环境安装 虚拟机安装 安装hadoop 安装zookeeper 安装过程 基本命令
2-网站日志分析案例-日志采集:Flume-Kafka-Flume-HDFS
|
存储 缓存 分布式计算
HDFS(二)|学习笔记
快速学习 HDFS(二)
139 0
HDFS(二)|学习笔记
|
SQL JSON 负载均衡
离线同步 mysql 数据到 HDFS2 | 学习笔记
快速学习离线同步 mysql 数据到 HDFS2
171 0
离线同步 mysql 数据到 HDFS2  |  学习笔记