我正在尝试将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前缀执行此操作。
我该怎么做呢,
请建议我。
提前致谢。