存储处理程序和NoSql

本文详细介绍了Hive与HBase的整合过程,包括如何使用Hive的StorageHandler背景来连接NoSQL存储,以及在整合过程中需要注意的一些关键问题。特别关注了如何在不扫描整个HBase表的情况下进行谓词下推优化,并强调了没有访问HBase行时间戳的方式,以及HBase键的显示定义问题。

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

存储处理程序是一个结合InputFormat、OutputFormat、SerDe和Hive需要使用的特定的代码,来将外部实体作为标准的Hive表进行处理的整体。

Storage Handler Background
Hadoop中有一个名为InputFormat的抽象接口类,其可以将来自不同源的数据格式化成可以作为job输入的格式。如TextInputFormat。
Hadoop同时还提供了一个名为OutputFormat的抽象接口类,其会获取到一个job的输出,然后将这个输出输入到一个实体中。如TextOutputFormat。
在Hadoop中输入和输出是物理文件的情况很正常。不过InputFormat和OutputFormat抽象接口可被用于从其他数据源(包括关系型数据库、NoSQL存储或Hbase,以及其他任何可通过InputFormat和OutputFormat进行设计实现的存储)中读取和存放数据。

HiveStorageHandler
该类是Hive用于连接如Hbase、Cassandra等类似的NoSQL存储的主要接口。检车下接口可以发现需要定义一个定制的InputFormat和一个OutputFormat以及SerDe。存储处理程序负责从底层存储子系统中读取或写入数据。

Hive与Hbase整合

对于一些指定Hive查询,不需要扫描整个HBase表,通过过滤下推裁剪将会得到返回给Hive的行数据。
可以进行一个谓词下推如:key>20、key<=20或者key<20,且key>=10
默认情况下,下推优化是开启的,不过可以通过如下命令将其关闭:
set hive.optimize.ppd.storage = false ;

下面是一些Hive和HBase列映射需要注意的问题
没有访问HBase行时间戳的方式,只会返回最新版本的行;
HBase的键必须进行显示定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值