如何用Hive向HBase中插入大量数据
类型:压缩解压大小:19.6M语言:多语言【中文】评分:8.0标签:立即下载。当我们使用HBase存储实时数据时,做一些数据分析操作比较困难,所以需要编写MapReduce Job。Hive主要作为数据分析的数据仓库,支持标准的SQL查询。做数据分析非常方便,自然会想到用Hive加载HBase的数据进行分析,但奇怪的是,在网上查看后,只能看到以下两种情况:
1.如何使用Hive将大量数据插入到HBase中?
2.Hive与HBase集成,直接从Hive甚至HBase的数据库进行查询。参考链接:https://cwiki . Apache . org/consensus/display/hive/HBA seintegration
选项1是我们需求的反向操作,直接忽略,选项2虽然没有做专门的Benchmark,但总觉得直接查询HBase不可靠。如果我们要经常做多种类型的数据分析,那么HBase的压力肯定会翻倍。
没有一个工具或方法可以直接将HBase中的数据导入Hive吗?
找了一段时间,好像没找到,只好自己想办法解决。
思考:
使用选项2,首先通过Hive的全表访问HBase的指定表,然后创建一个新的空表,将所有查询到的数据导入到新表中,并在新表中完成所有未来的数据分析操作。
动手吧。让我们尝试一个简单的例子。
首先,在HBase中创建一个名为student的表,该表包含两列,id和name。
hbase shellcreate 'student ',' id ',' name '
在表格中插入两行数据
放“student”,“row1”,“id:val”,“1”放“student”,“row1”,“name:val”,“Tony”放“student”,“row2”,“id:val”,“2”放“student”,“row2”,“name:val”,“Mike”
注意:插入数据时,必须指定列(例如id:val,name:value),直接使用列族(例如id,name)存储数据,这将导致以后通过Hive创建表时出现问题。
扫描此表以确保数据已被插入
扫描' student ' row COLUMN CELL row 1 COLUMN=id : val,timestamp=1384939342989,value=1 row1 column=name:val,timestamp=1384939365511,Value=Tony row 2 COLUMN=id : val,timestamp=1384939351444,Value=2 row 2 COLUMN=name 3: val,timestamp=1384939379245
参考:https://cwiki . Apache . org/consensus/display/hive/HBA seintegration
这里我们使用Pivotal公司的Pivotal Hadoop。
hive-aux path/usr/lib/gphd/hive/lib/hive-hbase-handler-0 . 11 . 0-gphd-2 . 1 . 1 . 0 . jar,/usr/lib/gphd/hbase . jar,/usr/lib/gphd/zookeeper . jar,/usr/lib/gphd/hbase/lib/guava-11 . 0 . 2 . jar-hiveconfig hbase . zookeeper . quorum=centos 62-3,centos 66
解释参数:
后三个jar包主要用于访问Hive时。hh base . zookeeper . quorum=centos 62-3、centos62-4和centos62-5意味着hbase使用这三个zoo keeper,所以不需要指定hbase master。
运行此命令后,将打开Hive的输入终端。
从Hive建立一个可以访问HBase的外部表
CREATE EXTERNAL TABLE student(键字符串,id int,名称字符串)STORED BY ' org . Apache . Hadoop . hive . hbase . HbasesetorageHandler ' with SERDEPROPERATIES(' hbase . columns . mapping '=' id : val,name : val ')TBLPROPERTIES(' hbase . TABLE . name '=' student ');
扫描学生表以确认成功访问:
从学生中选择*;OKrow1 1 Tonyrow2 2麦克
但此时,这个表实际上是一个虚拟表,实际的数据还在HBase中。接下来,我们需要在Hive中创建另一个具有相同结构的空表,然后导出数据。
储备中建立一个新的空表
创建表格新学生(键字符串id、INT、名称字符串)行格式定界字段由\t存储为文本文件终止;将数据从数据库中导入到新的储备表中
hive INSERT OVERWRITE TABLE new _ student SELECT * FROM student;
确认新表中数据正确:
储备从新生中选择*;OKrow1 1 Tonyrow2 2麦克
至此大功告成!
以后所有复杂的数据查询和数据分析都可以在新生表中完成。
版权声明:如何用Hive向HBase中插入大量数据是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。