在cdh6.3.2已经做好hbase和hive相关配置,这里不阐述。
要创建上述的表结构,你需要先在HBase中创建相应的表,然后在Hive中创建一个EXTERNAL TABLE来映射到这个HBase表。以下是详细的步骤:
步骤1:在HBase中创建表
- 确定HBase的安装和配置是否正确。
- 确定HBase的shell工具能够正常使用。
打开HBase shell:
hbase shell
在HBase shell中,创建一个表analysis_minute
和一个列族bls
:
create 'analysis_minute', 'bls'
退出HBase shell:
quit
步骤2:在Hive中创建EXTERNAL TABLE
- 确保Hive安装和配置正确。
- 确保HBaseStorageHandler已经包含在Hive的配置中。
使用Hive的命令行界面或者你的IDE来执行下面的SQL语句:
CREATE EXTERNAL TABLE analysis_minute_hbase (
key STRING,
pid STRING,
time STRING,
val STRING
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
'hbase.columns.mapping' = ':key,bls:pid,bls:time,bls:val',
'serialization.format' = '1'
)
TBLPROPERTIES (
'hbase.table.name' = 'analysis_minute',
'last_modified_by' = 'hdfs',
'last_modified_time' = '1713990161',
'numFiles' = '0',
'numFilesErasureCoded' = '0',
'numRows' = '0',
'rawDataSize' = '0',
'storage_handler' = 'org.apache.hadoop.hive.hbase.HBaseStorageHandler',
'totalSize' = '0'
);
这段SQL语句做了以下几件事情:
- 创建了一个EXTERNAL TABLE,意味着数据存储在HBase中,而不是Hive的数据仓库目录中。
- 使用了
HBaseStorageHandler
来允许Hive与HBase交互。 - 定义了四个字段,分别对应于HBase表中的列。
- 通过
WITH SERDEPROPERTIES
定义了Hive字段到HBase列族的映射。 - 通过
TBLPROPERTIES
定义了HBase表的名称和其他属性。
注意事项:
- 确保HBase表
analysis_minute
和列族bls
已经存在,Hive才能正确创建EXTERNAL TABLE。 - 确认Hive配置文件中已经包含了HBaseStorageHandler的jar包。
- 如果HBase表或列族名称与Hive表结构中的名称不匹配,Hive将无法找到对应的HBase表。
- 在执行上述Hive SQL语句之前,你可能需要根据你的Hadoop和Hive版本调整配置参数。