我正在尝试从hive表加载hbase表,因为我使用以下方法,如果我在hbase表中只有单列系列,它可以正常工作,但是如果我有多个系列则会抛出错误。
方法
源表
CREATE EXTERNAL TABLE temp.employee_orc(id String, name String, Age int)
STORED AS ORC
LOCATION '/tmp/employee_orc/table';
使用Hbase Serde创建Hive表
CREATE TABLE temp.employee_hbase(id String, name String, age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,emp:name,emp:Age')
TBLPROPERTIES("hbase.table.name" = "bda:employee_hbase", "hfile.family.path"="/tmp/employee_hbase/emp", "hive.hbase.generatehfiles"="true");
导出hbase文件
SET hive.hbase.generatehfiles=true;
INSERT OVERWRITE TABLE temp.employee_hbase SELECT DISTINCT id, name, Age FROM temp.employee_orc CLUSTER BY id;
加载hbase表
export HADOOP_CLASSPATH=`hbase classpath`
hadoop jar /usr/hdp/current/hbase-client/lib/hbase-server.jar completebulkload /tmp/employee_hbase/ 'bda:employee_hbase'
错误 如果我在Hbase表中有多个列族,
,我会收到以下错误java.lang.RuntimeException:关闭运算符时发生Hive运行时错误:java.io.IOException:在hdfs中找到多个系列目录:// hadoopdev/apps/hive/warehouse/temp.db/employee_hbase/_temporary/0/_temporary / attempt_1527799542731_1180_r_000000_0
如果没有这种方法,还有另一种加载Hbase表的方法吗?
答案 0 :(得分:0)
从hive到hbase的批量加载,目标表只能有一个列族。
答案 1 :(得分:0)