从Hbase创建hive外部表
时间: 2023-11-09 20:04:21 浏览: 129
在Hive中创建外部表与HBase的关联,需要使用HBase StorageHandler,具体步骤如下:
1. 在Hive中添加HBase StorageHandler
```
ADD JAR /path/to/hbase-handler.jar;
```
2. 在Hive中创建外部表,指定HBase StorageHandler
```sql
CREATE EXTERNAL TABLE hbase_table(
col1 string,
col2 int,
col3 double
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = ":key,cf:col2,cf:col3",
"hbase.table.name" = "hbase_table"
)
TBLPROPERTIES (
"hbase.mapred.output.outputtable" = "hbase_table",
"hbase.mapred.output.key.class" = "org.apache.hadoop.hbase.io.ImmutableBytesWritable",
"hbase.mapred.output.value.class" = "org.apache.hadoop.hbase.client.Result",
"hbase.mapred.output.key.value.separator" = "\t"
);
```
其中,"hbase.table.name"指定HBase表的名称,"hbase.columns.mapping"指定HBase表列与Hive表列的映射关系,"hbase.mapred.output.outputtable"指定HBase表的名称,其他的TBLPROPERTIES是必须的,用于指定输出的key、value类型等信息。
3. 查询外部表数据
```sql
SELECT * FROM hbase_table;
```
这样就可以在Hive中查询HBase表中的数据了。需要注意的是,Hive外部表只是对HBase数据的引用,不会将数据在Hive中复制一份,因此对Hive表的修改不会影响到HBase表中的数据。同样地,HBase表中的数据更新也不会影响到Hive表中的数据。
阅读全文