将多个列族从hbase导入到hive

时间:2016-11-15 08:16:13

标签: hadoop hive hbase bigdata

我正在尝试将包含两个列族 hbase 表移到 hive 表中。我可以移动一个列族,但是如何在同一个hive表中移动另一个列。

修改:

我在代码下面移动了一个列族。

CREATE TABLE hbase_hive(key string, firstname string, age string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “id:firstname,id:age")
TBLPROPERTIES(“hbase.table.name” = “hl”);

但我还有一个名为hb的列系列,并且有三列。如何实现这个目标。

更新

我还尝试在下面添加不同列系列的列名是我的代码。

CREATE TABLE hbase_hive(key string, firstname string, age string, testname string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “id:firstname,id:age,pd:name")
TBLPROPERTIES(“hbase.table.name” = “hl”);

但我的结果低于结果:

 819215975  19391121    625678921720    NULL
 819617215  19570622    625116365890    NULL
 820333876  19640303    623221670810    NULL
 824794938  19531211    625278010070    NULL
 828093442  19420803    625284904860    NULL
 828905771  19320209    625078004220    NULL
 829832017  19630722    625178010070    NULL

而不是值,我得到null。

更新:

我尝试使用hbase shell中的以下命令创建hbase表

create ‘hl’,’id’

然后我使用下面的命令

创建了另一个列族
alter ‘hl’,’pd’ 

2 个答案:

答案 0 :(得分:0)

在您的HiveQL中,从hbase表“hl”中选择列系列“id”中的两列到hive表中。如果要添加更多列(甚至是其他列族),只需将它们添加到表模式和hbase.columns.mapping即可。例如:

CREATE TABLE hbase_hive(key string, firstname string, age string, a string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “id:firstname,id:age,hb:a")
TBLPROPERTIES(“hbase.table.name” = “hl”);

请参阅https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration#HBaseIntegration-MultipleColumnsandFamilies

答案 1 :(得分:0)

我看到你写的几个问题(或多或少严重):

  • 首先,我会创建一个EXTERNAL TABLE而不是
  • 您正在创建一个只有3列但最终期望4列的Hive表
  • 您未明确映射:key
  • 您的'名字'的数据和'年龄'看起来像野生随机数! :|

我无法测试它,但以下应该是一个更好的起点:

CREATE EXTERNAL TABLE hbase_hive_hl(key string, firstname string, age string, name string)
STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key,id:firstname,id:age,pd:name")
TBLPROPERTIES(“hbase.table.name” = “hl”);