Hive 集成 Hudi 实践(含代码)| 可能是全网最详细的数据湖系列
公众号后台越来越多人问关于数据湖相关的内容,看来大家对新技术还是很感兴趣的。关于数据湖的资料网络上还是比较少的,特别是实践系列,对于新技术来说,基础的入门文档还是很有必要的,所以这一篇希望能够帮助到想使用Hudi的同学入门。
本篇的Hudi使用的是孵化版本 0.5.2;其他依赖 Spark-2.4.4,Hive-1.1.0
1|0Hudi 服务器环境准备
拷贝依赖包到 Hive 路径是为了 Hive 能够正常读到 Hudi 的数据,至此服务器环境准备完毕。
2|0用 Spark 写一段数据
一切准备完毕先写一段数据到 Hudi 里,首先数据源 ods.ods_user_event 的表结构为:
然后是 Maven 的依赖,详细代码关注公众号【老蒙大数据】回复 hudi 后即可获取。
代码逻辑:
- 初始化 SparkSession,配置相关配置项
- 构建 DataFrame,大家可以自由发挥,这里的案例是从Hive读数据构建。
- DataFrame写入Hudi,这一块说到底就是把数据写入 HDFS 路径下,但是需要一堆配置,这些配置就体现了 Hudi 的特性:
- DataSourceWriteOptions.RECORDKEY_FIELD_OPT_KEY:指定唯一id的列名
- DataSourceWriteOptions.PRECOMBINE_FIELD_OPT_KEY:指定更新时间,该字段数值大的数据会覆盖小的
- DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY:指定分区列,和Hive的分区概念类似
- HoodieIndexConfig.BLOOM_INDEX_UPDATE_PARTITION_PATH:设置当分区变更时,当前数据的分区目录是否变更
- HoodieIndexConfig.INDEX_TYPE_PROP:设置索引类型目前有 HBASE,INMEMORY,BLOOM,GLOBAL_BLOOM 四种索引
上述例子中,选择了 HoodieGlobalBloomIndex(全局索引),会在所有分区内查找指定的 recordKey。而 HoodieBloomIndex 只在指定的分区内查找。
执行成功后会有如下结果,因为我们是按照date分区,每一天的数据会生成一个文件夹和Hive类似。
另外,注意 recordKey 必须唯一,不然数据会被覆盖,且值不能为 null,否则会有以下报错。
3|0Hive 创建外部表读数据
上一步中 Spark 将数据写到了 hudi,想要通过Hive访问到这块数据,就需要创建一个Hive外部表了,因为 Hudi 配置了分区,所以为了能读到所有的数据,咱们的外部表也得分区,分区字段名可随意配置。
至此,直接读数据肯定是空的,因为我们创建的是个分区表,所以还需要指定分区
那么这个时候问题来了,一年有365个分区,要一个一个建立手动创建分区吗?
抱歉我也没发现更好的办法,只能送你个简单的脚本了。
4|0后记
最后,执行 select * from ods.ods_user_event_hudi 要是没有数据你来找我。另外值得注意的是,如果此时直接用 Hive 将数据 insert into ods.ods_user_event_hudi,虽然数据会写入到 hudi 的目录下,但是相同的 recordKey 是不会覆盖原有数据的。
下一篇详细写 Spark 操作 Hudi 的相关内容,敬请期待。本篇详细代码关注公众号【老蒙大数据】回复 hudi 后即可获取。
推荐阅读
3000字长文教你大数据该怎么学!
选方向?大数据的职位你了解多少
__EOF__

本文链接:https://www.cnblogs.com/uncledata/p/12974087.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?