columns有2个元素,而hbase.columns.mapping有3个元素从hbase创建配置单元表时出错

zkure5ic  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(681)

当我运行下面的命令创建配置单元表时,出现以下错误。
示例是我正在尝试创建的配置单元表。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))
vjhs03f7

vjhs03f71#

正如错误所描述的 create external table statement 有两列的 id,name .
在hbaseMap中有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 在Map上。
创建包含两列的表:

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");

相关问题