当我运行以下创建配置单元表的命令时出现以下错误。
示例是我要创建的配置单元表。 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))
最佳答案
由于错误描述您的创建外部表语句
具有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 和 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");
关于hive - 从 hbase 创建配置单元表时,列有 2 个元素,而 hbase.columns.mapping 有 3 个元素错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287652/