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,多个事务会被分组到一个“事务批次”
这能够帮助把很多