准备HBase测试表
测试表如下:
hbase(main):003:0> scan 'student'
ROW COLUMN+CELL
001 column=name:, timestamp=1539585704844, value=xiaomi
001 column=name:history, timestamp=1540620866603, value=xiao
001 column=number:, timestamp=1539585873280, value=1234566
001 column=number:age, timestamp=1541039468016, value=13
将HBase表映射到Hive
输入hive命令后,创建一个指向HBase表的Hive表:
hive> CREATE EXTERNAL TABLE IF NOT EXISTS student(
id string,
name string,
age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,name:,number:age")
TBLPROPERTIES("hbase.table.name" = "student");
- 建表或映射表的时候如果没有指定:key则第一个列默认就是行键
- 通过Hive的Map数据类型映射HBase表,这样每行都可以有不同的列组合,列名与map中的key对应,列值与map中的value对应
测试
使用Hive命令查询
hive> select * from student;
OK
001 NULL 13
Time taken: 0.897 seconds, Fetched: 1 row(s)
注意:不支持update、delete操作,会报Attempt to do update or delete using transaction manager that does not support these operations
错误
使用Impala查询
使用Impala-shell查询:
[398.cdh.slave1:21000] > select * from student;
Query: select * from student
Query submitted at: 2019-07-23 14:44:14 (Coordinator: http://398.cdh.slave1:25000)
Query progress can be monitored at: http://398.cdh.slave1:25000/query_plan?query_id=7e4dd4f5bee2168e:3ed69b3100000000
+-----+------+-----+
| id | name | age |
+-----+------+-----+
| 001 | NULL | 13 |
+-----+------+-----+
Fetched 1 row(s) in 0.98s
使用Hue的Impala界面查询:
- Hue是cdh专门的一套web管理器,它包括3个部分hue ui,hue server,hue db。hue提供所有的cdh组件的shell界面的接口。
注意:支持insert操作,不支持update、delete操作,会报AnalysisException: Impala does not support modifying a non-Kudu table
错误。
Impala与Hive的比较
Impala与Hive的关系
Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。
区别
Hive: 依赖于MapReduce执行框架,执行计划分成map->shuffle->reduce->map->shuffle->reduce…的模型。如果一个Query会被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。
Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的map->reduce模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。
Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据分析人员提供了快速实验、验证想法的大数据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。