全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

通过Hive访问HBase

最近更新时间:2024-11-19 16:11:53

Hive是基于Hadoop的数据仓库工具,专用于将结构化数据文件映射为数据库表,并提供完整的SQL查询功能,最终将SQL语句转换为MapReduce任务运行。主要用于处理和计算存储在HDFS上的数据,适用于离线的批量数据计算。Hive中的表是纯逻辑表,即表的元数据,通过Hive访问HBase提供了一种方便、统一的方式查询和处理HBase中的数据。结合了Hive的SQL-Like查询语言、HBase的实时随机访问能力和灵活的数据模型,使用户能够使用熟悉的查询语言对大规模非结构化数据进行实时查询和分析。这种组合提供了强大的数据处理工具,使用户更轻松地利用HBase和Hive处理和分析各种类型的大数据。


访问形式分类

Hive可以通过内部表外部表两种方式访问HBase,两者的主要区别在于数据的所有权和生命周期。

内部表

在Hive中创建内部表映射HBase表时,Hive将拥有该表数据的所有权。删除Hive内部表时,相应的HBase表和其中的数据也会被删除。若不希望删除Hive表时影响HBase中的数据,应使用外部表。

外部表

在Hive中创建外部表映射HBase表时,Hive不拥有该表数据的所有权。删除Hive外部表时,相应的HBase表和其中的数据不会被删除。若希望在Hive和HBase之间共享数据,并能够独立地管理这两个系统中的数据,应使用外部表。


Hive通过内部表访问HBase

在Hive中创建表,Hive会自动把表结构和数据写入到HBase里面。

进入hive控制界面

切换用户hadoop执行hive命令,当执行成功后可以进入hive>命令行。

在Hive中创建HBase表

在Hive中创建HBase表的示例:

create table hive_hbase_table(key int, value string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping" = ":key,cf1:val")
tblproperties("hbase.table.name" = "hive_hbase_table", "hbase.mapred.output.outputtable" = "hive_hbase_table");

插入数据到表中

利用insert into命令向表中插入数据,参考命令为:insert into hive_hbase_table values(1,'KMR');

查询表中的数据

利用select关键词执行命令查看hive_hbase_table表中的所有数据:

select * from hive_hbase_table;

删除表中的数据

  • 删除数据需要用到hbase shell进入hbase控制,然后输入命令进行删除操作:

delete 'hive_hbase_table', '1', 'cf1:val'

  • 通过Hive查询表中的所有数据,确认是否删除成功:

select * from hive_hbase_table;

查看表信息

查看表信息需要用到describe关键字:利用命令hbase shell命令进入HBase命令行,利用命令describe 'hive_hbase_table'查看表的信息。

在HBase中查看Hive端写的数据是否存在

利用命令hbase shell命令进入HBase命令行,然后利用命令scan 'hive_hbase_table'查看信息。


Hive通过外部表访问HBase

在HBase中创建表并插入数据,使用Hive外部表和HBase中的表建立映射关系。以下是具体步骤:

进入HBase命令行

执行hbase shell,进入HBase命令行。

在HBase中创建表

执行create 'hbase_table', 'k'创建一个名为hbase_table的表,并定义一个列族的名字。

往表中插入数据

执行put 'hbase_table', '1','k:col1','hai KSC'hbase_table表中插入一个行键为1,列的名称为k:col1的值为hai KSC的数据。

查看表信息

执行scan 'hbase_table'查看表数据。

与HBase建立映射关系

执行下列命令,在Hive中创建外表与HBase中的表建立映射关系:

create external table hbase_table(key int,col1 string)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping" = "k:col1")
tblproperties("hbase.table.name" = "hbase_table", "hbase.mapred.output.outputtable" = "hbase_table");

查看HBase上的数据

执行select * from hbase_table;查看hbase_table表中的数据。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈