ETL to HBASE Spark 流程总结

本文总结了基于Spark框架的ETL流程,从HDFS读取日志数据,进行数据清洗,然后将处理后的数据存储到HBase表中。讨论了HBase表的rowkey设计原则,包括唯一性、热点性和前缀匹配。详细阐述了ETL的六个步骤,包括读取、转换、过滤、提取、生成rowkey和保存到HBase。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

基于spark框架读取HDFS日志文件数据,进行ETL操作,最终将数据插入到HBase表中

采集数据有很多 事件类型,不同的事件类型字段类型不一样

HBase表的设计

每天一张表,每次分析的数据为一条的数据,rowkey设计

rowkey设计

满足:唯一性、热点性、前缀匹配

例:
a)服务器的时间
b)用户ID + 会员ID+ 事件名称 ->CRC32处理,得到一个Long数字
在这里插入图片描述
ETL

数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端

使用场景

要对某些日志数据文件进行分析时
ETL这一步是避免不了的
因为采集到的日志数据,总会有一部分脏数据
这部分脏数据可能会对后续的指标分析造成影响
所以要对数据进行一些操作,将数据转换成比较有规律的
我们想要的数据

步骤总结

第一步:读取资源

采集日志文件使用的工具有很多,如flume、kafka、ELk等工具
这些工具可以将采集到的日志数据存放到相应的文件系统中
如Flume可以将采集到的数据存放到HDFS,HIVE中
Spark可以从很多地方读取数据,比如HBase,HIVE,HDFS
但读取到的类型不同,比如HBase读到的是rowkey和result

第二步:转换格式

使用Spark的SparkContext或SparkSession可以从不同位置读取到数据
都会形成一个RDD(Resilient Distributed Datasets),弹性分布式数据集
RDD可以说是Spark的核心数据集合
此处常使用map方法操作读取到的RDD,将其中的数据转换成想要的数据格式
第一步中读取到的类型,为方便处理分析,往往将读取到的数据转换为元组

第三步:过滤脏数据,补全数据

ETL的功能,可以将对数据进行过滤
将我们不需要的数据进行过滤
将可以补全且需要的数据进行补全

第四步:提取想要的数据

在这一步,通常进行的操作即是将我们需要的数据
避免分析数据过于庞大
减小处理数据占用的资源
返回的大多是二元组或者多元组

第五步:保存数据结果

要考虑存放到HBase中时,rowkey的问题
在这一步就要将rowkey设计并生成
rowkey生成要满足三个点:唯一、热点、前缀匹配
同时在这一步,要将生成的rowkey进行转换
转换为ImmutableBytesWritable类型
还用生成一个Put对象,将截取出的数据进行Bytes转换后放到Put对象中
转换后的rowkey也要放到改put对象中
这一步的操作是在map中进行的
所以最后返回的值类型是一个二元组
key就是rowkey,value就是Put对象

第六步:结果到Hbase表中

建立HBase表时,要注意表名的设置,一般是每天都要分析数据
所以建议表名为日期,可以避免表名重复
或者将其作为参数,在执行Spark程序时将表面传入
同时设置表的数据压缩方式,并建立预分区
会用到RDD.saveAsNewAPIHadoopDataset()方法将数据存放到HBase中

最后关闭资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值