Hudi
文章平均质量分 84
数据湖中Hudi组件文章汇总
电光闪烁
一个大数据开发工程师的学习之路
展开
-
Hudi文章汇总
Hudi文章汇总(0.12版本):Hudi(1):Hudi概述Hudi(2):Hudi的编译和安装Hudi(3):Hudi之基本概念Hudi(4):Hudi之数据写Hudi(5):Hudi之数据读Hudi(6):Hudi集成Spark之spark-shell 方式Hudi(7):Hudi集成Spark之spark-sql方式Hudi(8):Hudi集成Spark之code方式Hudi(9):Hudi集成Spark之DeltaStreamer导入工具Hudi(10):Hudi集成Spa原创 2022-04-02 11:37:42 · 4919 阅读 · 0 评论 -
Hudi(26):Hudi集成Hive之同步工具
若写入引擎没有开启自动同步,则需要手动利用 Hudi 客户端工具进行同步,Hudi提供Hive sync tool用于同步Hudi最新的元数据(包含自动建表、增加字段、同步分区信息)到hive metastore。Hive sync tool提供三种同步模式,JDBC,HMS,HIVEQL。这些模式只是针对Hive执行DDL的三种不同方式。在这些模式中,JDBC或HMS优于HIVEQL, HIVEQL主要用于运行DML而不是DDL。原创 2023-02-21 17:59:58 · 1294 阅读 · 0 评论 -
Hudi(25):Hudi集成Hive之外表
除了要设置 hive.input.format,还需要设置上述的3个增量查询参数,且增量查询语句中的必须添加 where 关键字并将 `_hoodie_commit_time > 'startCommitTime' 作为过滤条件(这地方主要是hudi的小文件合并会把新旧commit的数据合并成新数据,hive是没法直接从parquet文件知道哪些是新数据哪些是老数据)。ro 表全称 read oprimized table,对于 MOR 表同步的 xxx_ro 表,只暴露压缩后的 parquet。原创 2023-02-20 18:28:07 · 1357 阅读 · 0 评论 -
Hudi(24):Hudi集成Hive之Flink使用HiveCatalog
hive3.1.3的connector存在guava版本冲突,需要解决:官网下载connector后,用压缩软件打开jar包,删除/com/google文件夹。处理完后上传flink的lib中。避免与hadoop的冲突,拷贝hadoop-mapreduce-client-core-3.1.3.jar到flink的lib中(5.2.1已经做过)步骤一:上传hive connector到flink的lib中。步骤二:解决与hadoop的冲突。步骤三:创建catalog。原创 2023-02-13 09:44:30 · 623 阅读 · 0 评论 -
Hudi(23):Hudi集成Hive之同步
Flink hive sync 现在支持两种 hive sync mode, 分别是 hms 和 jdbc 模式。其中 hms 只需要配置 metastore uris;注意:核心点为上述hive_sync系列的配置。原创 2023-02-10 11:40:44 · 1788 阅读 · 2 评论 -
Hudi(22):Hudi集成Flink之常见问题汇总
Hudi集成Flink之常见问题汇总:问题一:存储一直看不到数据问题二:数据有重复问题三:Merge On Read 写只有 log 文件原创 2023-02-09 10:12:54 · 1659 阅读 · 0 评论 -
Hudi(21):Hudi集成Flink之核心原理分析
在Hoodie 写入流程中,Hoodie 每写一个 parquet 都会有 base + 增量 merge 的过程,增量的消息会先放到一个 spillable map 的数据结构构建内存 index,这里的增量数据如果没有提前去重,那么同 key 的后来消息会直接覆盖先来的消息。默认情况下,不同的 partition 的消息是不去重的,即相同的 key 消息,如果新消息换了 partition,那么老的 partiiton 消息仍然保留。注意:write.precombine 选项控制了攒消息的去重。原创 2023-02-08 11:00:46 · 1212 阅读 · 0 评论 -
Hudi(20):Hudi集成Flink之可以离线进行的操作
因为压缩操作比较耗费内存,和写流程放在同一个 pipeline,在数据量比较大的时候(10w+/s qps),容易干扰写流程,此时采用离线定时任务的方式执行 compaction 任务更稳定。的操作,当写流程还在持续写入表数据的时候,开启这个参数有丢失查询数据的风险,所以开启该参数一定要保证当前没有任务往表里写数据。的操作,当写流程还在持续写入表数据的时候,开启这个参数有丢失查询数据的风险,所以开启该参数一定要保证当前没有任务往表里写数据。执行压缩任务的顺序,默认是从最新的压缩。模式下的执行间隔,默认。原创 2023-02-07 21:13:17 · 1564 阅读 · 4 评论 -
Hudi(19):Hudi集成Flink之索引和Catalog
通过 catalog 可以管理 flink 创建的表,避免重复建表操作,另外 hms 模式的 catalog 支持自动补全 hive 同步参数。WITH ('catalog.path' = '${catalog 的默认路径}',WITH ('catalog.path' = '${catalog 的默认路径}','hive.conf.dir' = '${hive-site.xml 所在的目录}','mode'='hms' -- 支持 'dfs' 模式通过文件系统管理表属性。原创 2023-02-06 13:12:59 · 1704 阅读 · 0 评论 -
Hudi(18):Hudi集成Flink之写入模式
如果希望 Hoodie 保留消息的所有变更(I/-U/U/D),之后接上 Flink 引擎的有状态计算实现全链路近实时数仓生产(增量计算),Hoodie 的 MOR 表通过行存原生支持保留消息的所有变更(format 层面的集成),通过流读 MOR 表可以消费到所有的变更记录。流读的时候我们要注意 changelog 有可能会被 compaction 合并掉,中间记录会消除,可能会影响计算结果,需要关注sql-client的属性(result-mode)同上。SELECTED_PARTITIONS 生效,原创 2023-02-05 11:29:02 · 1024 阅读 · 0 评论 -
Hudi(17):Hudi集成Flink之写入方式
注意:如果要再次生成测试数据,则需要修改meta.txt将自增id中的1改为比10000大的数,不然会出现主键冲突情况。步骤一:创建MySQL表(使用flink-sql创建MySQL源的sink表)步骤二:创建Kafka表(使用flink-sql创建MySQL源的sink表)步骤一:创建kafka源表(使用flink-sql创建以kafka为源端的表)步骤二:创建hudi目标表(使用flink-sql创建以hudi为目标端的表)步骤三:将kafka数据写入到hudi中(flink-sql内部操作)原创 2023-02-04 11:28:50 · 2229 阅读 · 0 评论 -
Hudi(16):Hudi集成Flink之读取方式
如果将全量数据(百亿数量级) 和增量先同步到 kafka,再通过 flink 流式消费的方式将库表数据直接导成 hoodie 表,因为直接消费全量部分数据:量大(吞吐高)、乱序严重(写入的 partition 随机),会导致写入性能退化,出现吞吐毛刺,这时候可以开启限速参数,保证流量平稳写入。通过参数read.streaming.enabled 参数开启流读模式,通过 read.start-commit 参数指定起始消费位置,支持指定 earliest 从最早消费。模式下,这个参数可以控制。原创 2023-02-02 13:37:49 · 2167 阅读 · 0 评论 -
Hudi(15):Hudi集成Flink之内存优化
注意:write.task.max.size - write.merge.max_memory 是预留给每个 write task 的内存 buffer。注意: write.task.max.size - compaction.max_memory 是预留给每个 write task 的内存 buffer。的过程,增量的数据会缓存在内存的。的数据在内存达到阈值之前会一直。在内存中,当阈值达到会把数据。一般不用设置,保持默认值就好。写操作的时候,会有增量数据和。为单位往磁盘刷数据的,在。原创 2023-01-31 17:24:13 · 1163 阅读 · 0 评论 -
Hudi(14):Hudi集成Flink之核心参数设置
目录0. 相关文章链接1. 去重参数2. 并发参数2.1. 参数说明2.2. 案例演示3. 压缩参数3.1. 参数说明3.2. 案例演示4. 文件大小4.1. 参数说明4.2. 案例演示5. Hadoop 参数Flink可配参数官网地址:All Configurations | Apache Hudi Hudi文章汇总 通过如下语法设置主键: 名称说明默认值备注hoodie.datasource.write.recordkey.field主键字段--支持主键语法 PRIMARY原创 2023-01-30 14:31:26 · 1658 阅读 · 0 评论 -
Hudi(13):Hudi集成Flink之code方式
Hudi集成Flink之code方式原创 2023-01-29 15:32:00 · 494 阅读 · 0 评论 -
Hudi(12):Hudi集成Flink之sql-client方式
注意,保存模式现在是Append。通常,除非是第一次创建表,否则请始终使用追加模式。现在再次查询数据将显示更新的记录。每个写操作都会生成一个用时间戳表示的新提交。查找前一次提交中相同的_hoodie_record_keys在_hoodie_commit_time、age字段中的变化。查看webui:http://bigdata1:8081。原创 2023-01-09 07:45:00 · 728 阅读 · 0 评论 -
Hudi(11):Hudi集成Spark之常规调优
在这种情况下,请考虑通过.bloomFilterFPP()/bloomFilterNumEntries()来调整Bloom过滤器的精度,以加速目标索引查找时间,另外可考虑一个以事件时间为前缀的键,这将使用范围修剪并显着加快索引查找的速度。Hudi写入parquet文件,需要使用一定的堆外内存,如果遇到此类故障,请考虑设置类似 spark.yarn.executor.memoryOverhead或 spark.yarn.driver.memoryOverhead的值。上述2个示例一样,一个换行,一个没换行。原创 2023-01-08 11:19:23 · 777 阅读 · 0 评论 -
Hudi(10):Hudi集成Spark之并发控制
针对写入操作(upsert、insert等)利用乐观并发控制来启用多个writer将数据写到同一个表中,Hudi支持文件级的乐观一致性,即对于发生在同一个表中的任何2个提交(写入),如果它们没有写入正在更改的重叠文件,则允许两个写入都成功。基于前面DeltaStreamer的例子,使用Delta Streamer消费kafka的数据写入到hudi中,这次加上并发写的参数。(4)zk下产生了对应的目录,/multiwriter_test下的目录,为代码里指定的lock_key。3)查看zk是否产生新的目录。原创 2023-01-08 00:13:47 · 1359 阅读 · 0 评论 -
Hudi(9):Hudi集成Spark之DeltaStreamer导入工具
HoodieDeltaStreamer工具 (hudi-utilities-bundle中的一部分) 提供了从DFS或Kafka等不同来源进行摄取的方式,并具有以下功能: 精准一次从Kafka采集新数据,从Sqoop、HiveIncrementalPuller的输出或DFS文件夹下的文件增量导入。 导入的数据支持json、avro或自定义数据类型。 管理检查点,回滚和恢复。 利用 DFS 或 Confluent schema registry的 Avro Schema。 支持自定义转换操原创 2023-01-04 08:45:00 · 691 阅读 · 0 评论 -
Hudi(8):Hudi集成Spark之code方式
Hudi集成Spark除了用shell交互式的操作,还可以自己编写Spark程序,打包提交到集群上运行。原创 2023-01-03 08:15:00 · 308 阅读 · 0 评论 -
Hudi(7):Hudi集成Spark之spark-sql方式
默认情况下,如果提供了preCombineKey,则insert into的写操作类型为upsert,否则使用insert。hoodie.sql.bulk.insert.enable 和 hoodie.sql.insert.mode。不需要指定模式和非分区列(如果存在)之外的任何属性,Hudi可以自动识别模式和配置。同hoodie.datasource.write.table.type。为了提高向hudi表加载数据的性能,CTAS使用批量插入作为写操作。表的主键名,多个字段用逗号分隔。原创 2023-01-02 07:45:00 · 2811 阅读 · 4 评论 -
Hudi(6):Hudi集成Spark之spark-shell 方式
我们希望类似hive的 "insert overwrite "操作,以忽略现有数据,只用提供的新数据创建一个提交。注意:该表有三级分区(区域/国家/城市),在0.9.0版本以前的hudi,在load中的路径需要按照分区目录拼接"*",如:load(basePath + "/*/*/*/*"),当前版本不需要。查询特定时间点的数据,可以将endTime指向特定时间,beginTime指向000(表示最早提交时间)新增数据,生成一些数据,将其加载到DataFrame中,然后将DataFrame写入Hudi表。原创 2023-01-01 16:46:15 · 1302 阅读 · 2 评论 -
Hudi(5):Hudi之数据读
Flink 的 streaming 读做到了真正的流式读取,source 定期监控新增的改动文件,将读取任务下派给读 task。但是内部的实现不够高效:拉取每个 commit 的全部目标文件再按照系统字段_hoodie_commit_time_ apply 过滤条件。读取所有 partiiton 下每个 FileGroup 最新的 FileSlice 中的文件,Copy On Write 表读 parquet 文件,Merge On Read 表读 parquet + log 文件。原创 2023-01-01 16:10:48 · 897 阅读 · 0 评论 -
Hudi(4):Hudi之数据写
写入过程充分优化了文件存储的小文件问题,Copy On Write 写会一直将一个 bucket (FileGroup)的 base 文件写到设定的阈值大小才会划分新的 bucket;Merge On Read 写在同一个 bucket 中,log file 也是一直 append 直到大小超过设定的阈值 roll over。原创 2022-12-31 23:49:20 · 1337 阅读 · 2 评论 -
Hudi(3):Hudi之基本概念
上图中采用时间(小时)作为分区字段,从 10:00 开始陆续产生各种 commits,10:20 来了一条 9:00 的数据,根据event time该数据仍然可以落到 9:00 对应的分区,通过 timeline 直接消费 10:00 (commit time)之后的增量更新(只消费有新 commits 的 group),那么这条延迟的数据仍然可以被消费到。对每一个新批次写入都将创建相应数据文件的新版本(新的FileSlice),新版本文件包括旧版本文件的记录以及来自传入批次的记录(全量最新)。原创 2022-12-27 21:31:14 · 1370 阅读 · 0 评论 -
Hudi(2):Hudi的编译和安装
pom文件位置:vim /opt/software/hudi-0.12.0/packaging/hudi-spark-bundle/pom.xml (在382行的位置,修改如下红色部分)位置:vim /opt/software/hudi-0.12.0/packaging/hudi-utilities-bundle/pom.xml(在405行的位置,修改如下(红色部分))修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。原创 2022-12-27 16:23:01 · 4830 阅读 · 1 评论 -
Hudi(1):Hudi概述
Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。Apache Hudi可以轻松地在任何云存储平台上使用。原创 2022-12-27 15:27:45 · 1315 阅读 · 0 评论 -
数据湖之Hudi(17):在云服务器上部署和调试Hudi的踩坑之旅
问题1:不能写入数据到HDFS中(There are 1 datanode(s) running and 1 node(s) are excluded in this operation.)原创 2022-03-31 23:36:40 · 2512 阅读 · 0 评论 -
数据湖之Hudi(16):Apache Hudi 中数据写操作流程
目录0. 相关文章链接1. 概述2. upsert写流程3. insert写流程0. 相关文章链接大数据基础知识点 文章汇总1. 概述在Hudi数据湖框架中支持三种方式写入数据:UPSERT(插入更新)、INSERT(插入)和BULK INSERT(写排序)UPSERT:默认行为,数据先通过 index 打标(INSERT/UPDATE),有一些启发式算法决定消息的组织以优化文件的大小 INSERT:跳过 index,写入效率更高 BULK_INSERT:写排序,对大原创 2022-03-03 01:00:00 · 1996 阅读 · 0 评论 -
数据湖之Hudi(15):Apache Hudi 中表的存储类型
目录0. 相关文章链接1. 总述2. 数据计算模型2.1.批式模型(Batch)2.2. 流式模型(Stream)2.3. 增量模型(Incremental)3. 查询类型(Query Type)3.1.快照查询(Snapshot Queries)3.2.增量查询(Incremental Queries)3.3.读优化查询(Read Optimized Queries)4. Hudi中的表类型4.1.Copy On Write4.2.Merge...原创 2022-03-02 01:00:00 · 2131 阅读 · 0 评论 -
数据湖之Hudi(14):Apache Hudi 基本概念
目录0. 相关文章链接1. 总述2. 时间轴Timeline3. 文件管理4. 索引Index5. Hudi数据存储管理0. 相关文章链接大数据基础知识点 文章汇总1. 总述Hudi 提供了Hudi 表的概念,这些表支持CRUD操作,可以利用现有的大数据集群比如HDFS做数据文件存储,然后使用SparkSQL或Hive等分析引擎进行数据分析查询。Hudi表的三个主要组件:1)、有序的时间轴元数据,类似于数据库事务日志。2)、分层布局的数据文件:实际写入...原创 2022-03-01 01:00:00 · 787 阅读 · 0 评论 -
数据湖之Hudi(13):使用Spark删除Hudi中的数据
目录0. 相关文章链接1. 环境准备和数据准备2. Maven依赖3. 核心代码0. 相关文章链接大数据基础知识点 文章汇总1. 环境准备和数据准备对Hudi的环境准备和数据准备,可以参考博主的另一篇博文,这里就不多描述了,博文连接:数据湖之Hudi(9):使用Spark向Hudi中插入数据2. Maven依赖在另一篇博文中有Maven依赖,但在这里还是补充一下 <repositories> <repository>原创 2022-02-28 13:00:00 · 2142 阅读 · 1 评论 -
数据湖之Hudi(12):使用Spark对Hudi中的数据进行增量查询(Incremental query)
目录0. 相关文章链接1. 环境准备和数据准备2. Maven依赖3. 核心代码0. 相关文章链接大数据基础知识点 文章汇总1. 环境准备和数据准备对Hudi的环境准备和数据准备,可以参考博主的另一篇博文,这里就不多描述了,博文连接:数据湖之Hudi(9):使用Spark向Hudi中插入数据2. Maven依赖在另一篇博文中有Maven依赖,但在这里还是补充一下 <repositories> <repository>原创 2022-02-27 13:00:00 · 1623 阅读 · 0 评论 -
数据湖之Hudi(11):使用Spark更新Hudi中的数据
目录0. 相关文章链接1. 环境准备1.1.构建服务器环境1.2. 构建Maven项目和写入数据2. Maven依赖3. 核心代码0. 相关文章链接大数据基础知识点 文章汇总1. 环境准备1.1.构建服务器环境关于构建Spark向Hudi中插入数据的服务器环境,可以参考博文的另外一篇博文,在CentOS7上安装HDFS即可,博文连接:数据湖之Hudi(6):Hudi与Spark和HDFS的集成安装使用1.2. 构建Maven项目和写入数据此博文演示的是..原创 2022-02-26 13:00:00 · 1751 阅读 · 0 评论 -
数据湖之Hudi(10):使用Spark查询Hudi中的数据
目录0. 相关文章链接1. 环境准备1.1.构建服务器环境1.2. 构建Maven项目和写入数据2. Maven依赖3. 核心代码3.1. 直接查询3.2. 条件查询0. 相关文章链接大数据基础知识点 文章汇总1. 环境准备1.1.构建服务器环境关于构建Spark向Hudi中插入数据的服务器环境,可以参考博文的另外一篇博文,在CentOS7上安装HDFS即可,博文连接:数据湖之Hudi(6):Hudi与Spark和HDFS的集成安装使用1.2. 构..原创 2022-02-25 13:00:00 · 1893 阅读 · 0 评论 -
数据湖之Hudi(9):使用Spark向Hudi中插入数据
目录0. 相关文章链接1. 开发说明2. 环境构建2.1. 构建服务器环境2.2. 构建Maven项目3. Maven依赖4. 核心代码0. 相关文章链接大数据基础知识点 文章汇总1. 开发说明Apache Hudi最初是由Uber开发的,旨在以高效率实现低延迟的数据库访问。Hudi 提供了Hudi 表的概念,这些表支持CRUD操作,基于Spark框架使用Hudi API 进行读写操作。2. 环境构建2.1. 构建服务器环境关于构建Spark向Hu原创 2022-02-24 13:00:00 · 5179 阅读 · 4 评论 -
数据湖之Hudi(8):数据湖Hudi的数据管理
目录0. 相关文章链接1. 表数据结果2..hoodie文件3. 数据文件4.数据存储概述5.Metadata 元数据6.Index 索引7.Data 数据0. 相关文章链接大数据基础知识点 文章汇总1. 表数据结果Hudi表的数据文件,可以使用操作系统的文件系统存储,也可以使用HDFS这种分布式的文件系统存储。为了后续分析性能和数据的可靠性,一般使用HDFS进行存储。以HDFS存储来看,一个Hudi表的存储文件分为两类。...原创 2022-02-23 00:35:26 · 2672 阅读 · 0 评论 -
数据湖之Hudi(7):使用docker进行Hudi的快速体验和使用
目录0. 相关文章链接1. 构建CentOS7环境2. 设置Docker2.1. 编译Hudi源码2.2. 安装docker和docker-compose2.3.运行 docker compose 脚本并设置配置以启动集群3. 运行Demo3.1. 使用脚本拉取案例数据并发送到kafka中3.2. 将kafka中的数据写入到Hudi中3.3. hudi数据于hive的集成3.4. 运行hive执行查询3.5. 运行Spark-SQL集成Hudi3.6. .原创 2022-02-22 22:40:27 · 4331 阅读 · 3 评论 -
数据湖之Hudi(6):Hudi与Spark和HDFS的集成安装使用
目录0. 相关文章链接1. 编译Hudi源码1.1. Maven安装1.2. 下载并编译hudi2. 安装HDFS3. 安装Spark4. 在spark-shell中运行hudi程序主要介绍的Apache原生的Hudi、HDFS、Spark等的集成使用0. 相关文章链接大数据基础知识点 文章汇总1. 编译Hudi源码虽然对hudi的下载编译在博主的另一篇博文里有介绍,但这里是系统的介绍Hudi的体验使用,所以在介绍一遍。1.1. Maven安装原创 2022-02-21 13:00:00 · 7296 阅读 · 1 评论 -
数据湖之Hudi(5):Apache Hudi 的编译
目录0. 相关文章链接1. Hudi源码包下载2. 基于CentOS7编译Hudi(默认Spark等组件版本)3. 基于windows编译Hudi(默认Spark等组件版本)4. 基于windows编译Hudi(选择Spark等组件版本)5. 基于CentOS7编译Hudi(选择Spark等组件版本)6. 基于windows编译Hudi报错解决方案7. 各Hudi编译后Jar包下载地址0. 相关文章链接大数据基础知识点 文章汇总1. Hudi源码包下载...原创 2022-02-13 22:34:12 · 3605 阅读 · 1 评论