如何使用Hive处理所有Hbase数据

时间:2019-07-13 09:12:29

标签: hive mapreduce hdfs hbase batch-processing

我有一个具有750GB数据的HBase。 HBase中的所有数据都是时间序列传感器数据。而且,我的行键设计是这样的;

deviceID,sensorID,时间戳

我想准备hbase中的所有数据以进行批处理(例如HDFS上的CSV格式)。但是hbase中有很多数据。我可以使用配置单元准备数据而不部分获取数据吗?因为,如果我要使用传感器ID(扫描具有开始-结束行的查询)获取数据,则必须每次都指定开始和结束行。我不要这样

1 个答案:

答案 0 :(得分:1)

您可以先使用Hive-Hbase integration,然后再使用map hbase table数据到hive table

然后使用 Hive-Hbase表,我们可以创建Hbase表到常规Hive表(orc,parquet..etc)的完全转储。

Step-1:Create HBase-Hive Integrated table:

hive> CREATE EXTERNAL TABLE <db_name>.<hive_hbase_table_name> (key int, value string) 
      STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
      WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
      TBLPROPERTIES ("hbase.table.name" = "<hbase_table_name>");

Step-2:Create Hive Dump of Hbase table:

hive> create table <db_name>.<table_name> stored as orc as 
         select * from <db_name>.<hive_hbase_table_name>;

Step-3: Exporting to CSV format:

hive> INSERT OVERWRITE  DIRECTORY <hdfs_directory> 
      ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
      select * from <db_name>.<hive_hbase_table_name>;

有关导出配置单元表的更多详细信息/选项,请参见this链接。