赞
踩
在Hive总结的第二篇中讲述了HBase与Hive的总结!
1. 准备测试数据
创建测试文件course.csv
- hive,90
- hbase,85
- hadoop,78
- flume,89
- sqoop,99
- storm,80
- spark,78
- kafka,70
第一列为课程名称,第二列为课程分数
2. 数据加载到HDFS上
在hdfs文件系统中创建hive-hbase目录,并加载测试数据。
(1)查看hdfs文件目录
hdfs dfs -ls /
(2)创建/hive-hbase/course目录
hdfs dfs -mkdir -p /hive-hbase/course
(3)将course.csv文件上传至/hive-hbase/course目录下
hdfs dfs -put course.csv的路径 /hive-hbase/course/
3. 创建Hive数据库
进入Hive Shell 客户端创建库course
create database course;
4. 创建Hive外部表
进入Hive Shell 客户端创建外部表
- create external table if not exists course.testcourse
- (cname string,score int)
- row format delimited fieldsterminated by ','
- stored as textfile location '/hive-hbase/course';
-
5. 查询数据
6. 创建内部表
- create table course.hbase_testcourse 创建Hive内部表
-
- (key string,cname string,score int) hive表的字段
-
- STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES
-
- ("hbase.columns.mapping" = ":key,cf:cname,cf:score") hive与hbase的映射字段
-
-
- TBLPROPERTIES("hbase.table.name" = "hbase_testcourse"); hive与hbase的映射表
-
【提示】创建成功后,hive与hbase中同时都有这个表
7. 加载数据
- insert overwrite table course.hbase_testcourse
- select score,cname,score from course.testcourse;
8. hive中执行查询
【提示】在hive中删除内部表时,hbase中的表也会被删除!
创建外部表适用于该表在HBase中已经存在,但在Hive中并没有相关信息。此时可以通过创建外部表的方式,为HBase现有表提供SQL查询条件。而内部表适用于Hive和HBase都没有相关表的情况。
(1)创建HBase表
进入HBase Shell客户端执行建表命令
create 'hbase_test',{ NAME =>'cf'}
(2)插入数据
执行以下命令插入数据
- put 'hbase_test','hadoop','cf:score', '95'
-
- put 'hbase_test','storm','cf:score', '96'
-
- put 'hbase_test','spark','cf:score', '97'
(3)创建Hive外部表
- create external table course.hbase_test(cname string,score int)
-
- STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES
-
- ("hbase.columns.mapping" =":key,cf:score")
-
- TBLPROPERTIES("hbase.table.name" ="hbase_test");
-
-
(4)在hive中查询hbase表中的数据
通过创建外部表可以成功从Hive 查询HBase表中的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。