本文档主要介绍了如何在Hive中与HBase进行交互,包括创建临时中间表、导入数据以及将数据从Hive表加载到HBase表的过程。HBase是基于列族的NoSQL分布式数据库,其核心组件包括HMaster(主服务器)、HRegionServer(区域服务器)、HRegion(数据存储单元)和Store等。
首先,作者在Hive中创建了一个名为`hbase_temp`的临时表,使用`row format delimited`来指定数据格式,字段之间由逗号分隔。然后,通过`load data local`命令将本地文件`/root/1.txt`中的数据导入这个临时表,覆盖已有的数据。
接下来,文章展示了两种将临时表数据插入到HBase表的方式:
1. 单列族数据导入:通过`insert overwrite`命令,直接将`hbase_temp`表中的所有列导入到`hbase_table`表。
2. 多列族数据导入:当数据涉及多个列族时,如`hbase_table_1`表,需要指定分区(如按日期分区),例如`partition (day='2015-04-022')`,然后执行插入操作。
此外,文中还提及了HBase的一些概念,如Store、MemStore、StoreFile、HLog和HFile,这些都是HBase存储和管理数据的基本结构,Store用于处理数据的读写,MemStore是临时存储区,而StoreFile和HFile则是持久化存储的数据文件。HLog记录了所有对表的修改,是HBase的事务日志。
当遇到冗余Master的情况时,需要在`conf`目录下创建`backup-masters`文件,列出冗余Master的主机名,以确保系统的高可用性。另外,文档中还提到了依赖的HBase客户端版本(0.98.8-hadoop2)。
在HBase的示例操作中,作者使用了`importtsv`工具,这是一个用于批量导入数据的工具,配置选项包括指定列名、输出路径等。例如,`importtsv.columns`指定了列映射,`importtsv.bulk.output`则设置了数据输出的HDFS路径。
最后,作者展示了在HBase中创建表和写入数据的基本操作,如创建表`test`,定义列族(如`base`和`data`),并使用`put`命令插入键值对,同时包含了`name`和`age`这样的属性。
这篇文档为读者提供了使用Hive与HBase进行交互的实践指南,涵盖了从数据导入、存储结构到基本操作的方方面面。