Streaming Data Ingest介绍

本文介绍了Hive的Streaming Data Ingest功能,主要利用Hive HCatalog Streaming API实现流式数据插入。从Hive 0.14版本开始,支持向已有分区插入数据。API分为连接和事务管理以及I/O支持两部分,使用HiveEndPoint和StreamingConnection进行操作。事务通过Metastore管理,允许多个客户端并发创建分区。TransactionBatch用于写入一系列事务,每个事务涉及的记录会被分配到合适的bucket并写入HDFS。

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

Streaming Data Ingest介绍

主要是使用Hive HCatalog Streaming API
传统情况下增加新的数据,需要收集hdfs上的数据,并且定期的向新的分区中增加。
那么,batch insert是很有必要的。之前,不能向已存在的分区中插入数据,
现在,hive0.14版本之后,Hive Streaming Api支持持续的插入数据。
新插入的数据,可以在一个批次中,提交到hive表中。
Hive HCatalog Streaming API是为流式客户端准备的,如Flume,Storm,它们持续不断的产生数据。
流式支持,是基于Hive表对ACID的支持。

这个API分为两个部分
第一个部分提供连接和事务的管理
第二个部分提供I/O支持
事务是通过metastore管理的。

HiveEndPoint

描述了一个需要连接的hive终端,库名,表名,分区名都包括
调用它上面的newConnection 方法建立一个到Hive Metastore的用于Streaming的连接。它返回一个StreamingConnection对象。同一个endpoint上,可以建立多个连接。
StreamingConnection可以被用来初始化新的事务来执行IO
HiveEndPoint.newConnection()方法接收一个boolean类型的参数,来决定是否创建分区,分区的创建时原子性的,所以,多个客户端可以比赛创建分区,但是只有一个会创建成功。

事务的实现,与传统的数据库的实现有一点不一样。
每个事务都有一个事务ID,多个事务会被分组到一个“事务批次”
这能够帮助把很多的事务记录分组到更少的文件中,避免一个事务一个文件。

在创建连接之后,client端会请求一个新的事务批次,会返回一组事务id,这些事务id都是一个事务批次中的一部分。然后,client端会通过初始化新的事务,来每次处理一个事务id。

Client端的write()方法会在每个事务中写一条或者多条记录,然后在转到下一个事务之前,commit或者abort当前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值