我在“hbase”表“hbase\u sample”中有行、列族h1,其中有两个值id和name。我想在配置单元中创建带有id和name列的外部表,我不想写行或键字段。
hive> create external table sample (id string,name string)
> STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
> with serdeproperties ("hbase.columns.mapping"=":key,h1:id,h1:name")
> tblproperties("hbase.table.name"="sample_hbase");
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))
1条答案
按热度按时间kxe2p93d1#
通过查看错误消息,hbase似乎有rowid、id和name三列。创建包含两列(即id和name)的配置单元表时。创建包含所有三列的配置单元表,并将其命名为table\u name\u temp table。一旦有了临时表,就从配置单元中的临时表创建两列表,然后删除临时表。看看这个解决方案是否适合你。