将Hbase表完整数据读取到配置单元

时间:2016-12-21 07:53:14

标签: hadoop hive hbase

我正在尝试将hbase表读入hive。

我已经尝试过以下命令来读取完整的表数据。

CREATE EXTERNAL TABLE hbase_table_2(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping" = "cd:value")TBLPROPERTIES("hbase.table.name" = "companydetail", "hbase.mapred.output.outputtable" = "companydetail_hive");

cd是我表中的一个列家族及其值。

这里的问题是,当我运行这个命令时,它只给出我在hbase列映射中提到的特定值。

但是我想在hbase中加载包含超过5000行的hive中的完整表,并且列系列(cd)包含不同的column_prefix。 我已经尝试了你的建议,但我仍然没有得到我真正需要的东西。

在我的表列中,系列是cd,表名是companydetail。

样本表数据: -

ROW                              COLUMN+CELL

\x00\x00\x00\x00\x00\x00\x06\xA6 column=cd:cct, timestamp=1475738991531, value=Atlanta

\x00\x00\x00\x00\x00\x00\x06\xA6 column=cd:cnt, timestamp=1475740226346, value=Network ICE Corp.

\x00\x00\x00\x00\x00\x00\x06\xA6 column=cd:ct, timestamp=1475740596684, value=ISYI srl

我相信 cct是col_prefix

我尝试了另外一种方法,

CREATE TABLE hbase_11(value map<string,int>, row_key int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping" = "cd:cct.*,:key" );

当我尝试这个时,我什么都没得到。 0条记录。 在这里,我们只提供列系列,但我们没有提到任何地方我们想要获取数据的表格。

我尝试过另一种方式。

CREATE EXTERNAL TABLE hbase_table_1(value map<string,int>, row_key int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping" = "cd:cct.*,:key" ) TBLPROPERTIES("hbase.table.name" = "companydetail", "hbase.mapred.output.outputtable" = "companydetail_hive");

我得到输出为

{"cct":null}   NULL
{"cct":null}   NULL
{"cct":null}   NULL
{"cct":null}   NULL
{}   NULL
{"cct":null}   NULL
{}   NULL
{"cct":null}   NULL
{"cct":null}   NULL
{"cct":null}   NULL
{"cct":null}   NULL

Time taken: 0.45 seconds, Fetched: 1291 row(s)

表由1291行组成,如果我说cct是表的col_prefix,那么它有1291个col_prefix。

我无法得到整个表数据,因为我必须为所有1291前缀执行此操作。

我该怎么做呢,

请建议我。

提前致谢。

0 个答案:

没有答案