最近更新时间: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中创建表,Hive会自动把表结构和数据写入到HBase里面。
切换用户hadoop
执行hive
命令,当执行成功后可以进入hive>
命令行。
在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 shell
命令进入HBase命令行,然后利用命令scan 'hive_hbase_table'
查看信息。
在HBase中创建表并插入数据,使用Hive外部表和HBase中的表建立映射关系。以下是具体步骤:
执行hbase shell
,进入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'
查看表数据。
执行下列命令,在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");
执行select * from hbase_table;
查看hbase_table表中的数据。
纯净模式