Hive 如何映射配置单元中没有限定符的HBase列?

Hive 如何映射配置单元中没有限定符的HBase列?,hive,hbase,Hive,Hbase,我想将我的HBase表映射到Hive,这是我得到的: CREATE EXTERNAL TABLE kutschke.bda01.twitter ( rowkey BIGINT, userId BIGINT, text STRING, creationTime STRING, isRetweet BOOLEAN, retweetId BIGINT ) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPRO

我想将我的HBase表映射到Hive,这是我得到的:

CREATE EXTERNAL TABLE kutschke.bda01.twitter (
rowkey BIGINT,
userId BIGINT,
text STRING,
creationTime STRING,
isRetweet BOOLEAN,
retweetId BIGINT
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key, user:id, text:, time:createdAt, retweet:isRetweet, retweet:retweetId'
TBLPROPERTIES('hbase.table.name' = 'kutschke.bda01.twitter'
但是,“text:”列没有正确映射,因为它没有限定符。相反,我得到了一个例外:

Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: 
MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.hbase.HBaseSerDe: 
hbase column family 'text' should be mapped to Map<? extends LazyPrimitive<?, ?>,?>, 
that is the Key for the map should be of primitive type, but is mapped to string)
使用文件:/etc/hive/conf.dist/hive-log4j.properties中的配置初始化日志记录
失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask返回代码1。java.lang.RuntimeException:
MetaException(消息:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.hbase.hbaseserd:
hbase列族“文本”应映射到映射,?>,
即映射的键应为基元类型,但映射为字符串)

我想我理解将整个列族映射到Map背后的逻辑,但是有没有一种方法可以正确地使用空限定符映射列?如果没有,我需要如何将列族映射到映射,以及如何检索实际需要的列?

这可以通过键入配置单元列作为配置单元本地映射类型来实现,如下所示:

CREATE TABLE hbase_table_1(value map<string,int>, row_key int) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = "cf:,:key"
);
CREATE TABLE hbase\u TABLE\u 1(值映射,行键int)
由“org.apache.hadoop.hive.hbase.HBaseStorageHandler”存储
具有serdeproperty(
“hbase.columns.mapping”=“cf:,:key”
);
映射到整个CF的字段的输出将显示为json字符串

更多信息请点击此处: