我正在尝试将hbase表读入配置单元。
我尝试了下面的命令来读取完整的表数据。
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列Map中提到的特定值。
但是我想在hive中加载完整的表,它在hbase表中包含超过5000行,并且column family(cd)包含不同的列前缀。我试过你的建议,但还是没有得到我真正需要的。
在我的表中,列族是cd,表名是companydetail。
样品表data:-
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\ u前缀。
我试过另一种方法如下,
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\u前缀,那么它有1291 col\u前缀。
我不能得到整个表的数据,因为我必须为所有的1291前缀。
我该怎么做,
请建议我。
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!