我正在尝试将包含两个列族的 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’
答案 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”);
答案 1 :(得分:0)
我看到你写的几个问题(或多或少严重):
EXTERNAL TABLE
而不是: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”);