columns有2个元素,而hbase.columns.mapping在从hbase创建hive表时有3个元素错误

问题描述 投票:1回答:1

当我运行以下命令创建hive表时,我收到以下错误。

示例是我正在尝试创建的hive表。 hloan是我现有的hbase表。请帮忙。

create external table sample(id int, name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES("hbase.columns.mapping"=":key,hl:id,hl:name") 
TBLPROPERTIES ("hbase.table.name"="hloan","hbase.mapred.output.outputtable"="sample");

错误:

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: columns has 2 elements while hbase.columns.mapping has 3 elements (counting the key if implicit))
hive centos hdfs hbase cloudera
1个回答
0
投票

由于错误描述你的create external table statement有2列id,name

在Hbase映射中,您有3列:key,hl:id,hl:name

创建包含3列的表:

hive> create external table sample(key int, id int, name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES("hbase.columns.mapping"=":key,hl:id,hl:name") 
TBLPROPERTIES ("hbase.table.name"="hloan","hbase.mapred.output.outputtable"="hloan");

(要么)

如果key and id列具有相同的数据,那么您可以在映射中跳过hl:id

创建包含2列的表:

hive> create external table sample(id int, name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES("hbase.columns.mapping"=":key,hl:name") 
TBLPROPERTIES ("hbase.table.name"="hloan","hbase.mapred.output.outputtable"="hloan");
© www.soinside.com 2019 - 2024. All rights reserved.