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

标签 hive centos hdfs hbase cloudera

当我运行以下创建配置单元表的命令时出现以下错误。

示例是我要创建的配置单元表。 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/

相关文章:

hadoop - Hive 禁用历史日志和查询日志

linux - HDFS + 在 HDFS 文件夹到本地文件系统文件夹之间创建符号链接(symbolic link)

hadoop - 我们能否从 Hue 获得与 "hadoop fsck"相同的指标?

php-fpm.sock 在 CentOS 7 上缺少 : php7. 2

centos - scp 上传后挂起

Apache webserver - 为子域设置 dns

java - Hadoop 自定义记录读取器实现

hadoop - 如何在Hive中使用2 for循环

hadoop - 使用配置单元搜索文档中特定单词的出现

mysql - Scoop 选择性导出 hdfs 到 mysql