目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:466.7k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(205)
赞(0)

8.3 外部表

Hive建立外部表要求hbase中必须有表对应,否则抛错。

实战演示:

  1. hive中创建外部表

    执行后出现如下错误提示:

  2. 在hbase中创建表t_order

  3. 在hive中再次创建外部表

  4. hbase中添加数据

  5. hive中查询

  6. hive中插入数据,并查询

  7. hbase中查询

思考:数据到底保存到hive的表中还是hbase的表中?

测试步骤如下:

  1. 访问HDFS的WebUI界面查看

    hive的查询,根据Active NameNode所在的节点进行选择:

    http://node1:9870/explorer.html#/user/hive_remote/warehouse/tmp_order 或者:

    http://node2:9870/explorer.html#/user/hive_remote/warehouse/tmp_order

    hbase的查询,根据Active NameNode所在的节点进行选择:

    http://node1:9870/explorer.html#/hbase_ha/data/default/t_order/b87c2adcf357caf1b1ec5fbb50156bcc/order

    或者:

    http://node2:9870/explorer.html#/hbase_ha/data/default/t_order/b87c2adcf357caf1b1ec5fbb50156bcc/order

    注意:b87c2adcf357caf1b1ec5fbb50156bcc每个人的都可能不同,最好的办法是先访问到表路径,然后进行选择进入。

    结果发现以上两个地方都没有数据

  2. 在hbase中刷新表

  3. 然后在刷新1中的页面进行查看,发现只用hbase的表下面有数据文件,说明hive和hbase整合时,内部表关联的数据在hbase中保存。

总结:

  1. 创建hive的内部表,要求hbase中不能有对应的表

  2. 创建hive的外部表,要求hbase中一定要有对应的表

  3. 映射关系通过with serdeproperties ("hbase.columns.mapping" = ":key,cf:id,cf:username,cf:age")

  4. stored by指定hive中存储数据的时候,由该类来处理,该类会将数据放到hbase的存储中,同时在hive读取数据的时候,由该类负责处理hbase的数据和hive的对应关系

    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

  5. 指定hive表和hbase中的哪张表对应,outputtable负责当hive insert数据的时候将数据写到hbase的哪张表。

    tblproperties ("hbase.table.name" = "my_table", "hbase.mapred.output.outputtable" = "my_table");

  6. 如果hbase中的表名和hive中的表名一致,则可以不指定tblproperties。

实时反馈

1. hbase整合hive后,关于hive与hbase有映射关系的外部表相关的描述,错误的是?

A 创建hive的外部表,要求hbase中不能有对应的表,否则报错。

B 数据既可以在hive端进行添加,也可以在hbase端进行添加。

C 数据在hive端可以通过insert直接向与hbase有映射关系的表中添加数据。

D 创建hive的外部表,要求hbase中有对应的表,否则报错。

2. hbase整合hive后,关于hive与hbase有映射关系的外部表数据的存储位置,正确的是?说明hive表创建时使用STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'

A 数据保存在hive的表中。

B 数据保存在hbase的表中。

C 数据保存在hive、hbase的表中都保存。

答案:

1.A 2.B

实操

  1. 简单描述hbase 的架构设计中Client、Zookeeper、Master、RegionServer各自的主要作用?
  2. 简单描述hbase的写流程?
  3. 简单描述hbase的读流程?
  4. 简述建表时如何预置多个region?
HBase与Hive整合_内部表二 HBase与Hive整合_外部表二

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2