Hive与HBase整合详解

2023-05-16

参考之前小节的大数据010——Hive与大数据012——HBase成功搭建Hive和HBase的环境,并进行了相应的测试,并且在大数据011——Sqoop中实现Hive、HBase与MySQL之间的相互转换;本文讲述如何将Hive与HBase进行整合。

1. Hive与HBase整合概述

1.1 整合原理

Hive与HBase整合的实现是利用两者本身对外的API接口互相通信来完成的,其具体工作交由Hive的lib目录中的hive-hbase-handler-*.jar工具类来实现。

1.2 应用场景

1.2.1 将ETL操作的数据存入HBase

通过Hive的ETL操作把经过处理数据加载到HBase中,数据源可以是HDFS上的文件也可以是Hive中的表。

在这里插入图片描述

1.2.2 HBase作为Hive的数据源

如果让HBase作为数据源,则通过整合可以让HBase数据与HDFS文件数据用Hive 实现 JOIN、GROUP等SQL查询语法。

在这里插入图片描述

1.2.3 构建低延时的数据仓库

通过整合Hive不仅可完成HBase的数据实时查询,也可以使用Hive查询HBase中的数据完成复杂的数据分析。

在这里插入图片描述

2. Hive与HBase整合配置

2.1 环境准备

参照之前小节安装Hadoop集群、Hive、HBase。

2.2 关键配置

1)、进入到 hive/lib 目录下,把 hive-hbase-handler-1.2.1.jar 复制到 hbase/lib 目录下:

[root@node01 ~]# cd /home/hive-1.2.1/lib
[root@node01 lib]# cp -f hive-hbase-handler-1.2.1.jar /home/hbase-0.98.12.1/lib/

2)、把 hbase/lib 目录下的所有的jar包拷贝到 hive/lib 目录下:

 \cp -rf /home/hbase-0.98.12.1/lib/* /home/hive-1.2.1/lib

注意:\cp 命令可以不提示覆盖文件的提示cp: overwrite xxx。

3)、修改 hive 的配置文件 hive/conf/hive-site.xml 增加属性:

  <property>
    <name>hbase.zookeeper.quorum</name>
      <!--zookeeperj集群节点-->
    <value>node01,node02,node03</value>
  </property>

4)、在 hive 中创建映射表

  1. 启动Zookeeper集群、Hadoop集群、MySQL 服务;
  2. 启动 hive、hbase;
  3. 创建映射表:
hive> CREATE TABLE hivetb(key int, name string, age string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:name,cf1:age")
TBLPROPERTIES ("hbase.table.name" = "hbasetb", "hbase.mapred.output.outputtable" = "hbasetb");
  1. 检查表格:
hive> show tables;
OK
hbasetbl
hivetb
psn
Time taken: 0.096 seconds, Fetched: 3 row(s)
hbase(main):002:0> list
TABLE                                                                   
SYSTEM.CATALOG                                                           
SYSTEM.FUNCTION                                                         
SYSTEM.SEQUENCE                                                          
SYSTEM.STATS                                                      
hbasetb                                                        
5 row(s) in 0.0800 seconds

=> ["SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "hbasetb"]
hbase(main):003:0> desc 'hbasetb'
Table hbasetb is ENABLED                                                                                                                                         
hbasetb                                                                                                                                                          
COLUMN FAMILIES DESCRIPTION                                                                                                                                      
{NAME => 'cf1', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMP
RESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}                                                    
1 row(s) in 0.3220 seconds

2.3 测试

使用HQL向hive表插入一条数据:

hive> INSERT INTO TABLE hivetb VALUES(1,'zhangsa',18),(2,'lisi',22);
Query ID = root_20190127174636_a94d5259-84ca-4de3-ab82-9253c60a38f2
Total jobs = 1
......
2019-01-27 17:46:48,514 Stage-0 map = 0%,  reduce = 0%
2019-01-27 17:47:21,544 Stage-0 map = 100%,  reduce = 0%, Cumulative CPU 2.43 sec
MapReduce Total cumulative CPU time: 2 seconds 430 msec
Ended Job = job_1548581535082_0001
MapReduce Jobs Launched: 
Stage-Stage-0: Map: 1   Cumulative CPU: 2.43 sec   HDFS Read: 9789 HDFS Write: 0 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 430 msec
OK
Time taken: 47.42 seconds
hive> use default;
OK
Time taken: 0.506 seconds
hive> select * from hivetb;
OK
1	zhangsa	18
2	lisi	22
Time taken: 0.119 seconds, Fetched: 2 row(s)
hive> 

在HBase端查看插入的数据:

hbase(main):002:0> scan 'hbasetb'
ROW    COLUMN+CELL                                         
 1     column=cf1:age, timestamp=1548582441196, value=18  
 1     column=cf1:name, timestamp=1548582441196, value=zhangsa 
 2     column=cf1:age, timestamp=1548582441196, value=22 
 2     column=cf1:name, timestamp=1548582441196, value=lisi  
2 row(s) in 0.1600 seconds
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive与HBase整合详解 的相关文章

  • HBase 上的 Thrift 有性能基准吗?

    我有一个可以将大量数据写入 hbase 的系统 系统是用c 编写的 发现hbase有其他语言的thrift接口 我的问题是 HBase 上的 Thrift 有性能基准吗 与java原生api相比 最劣势是什么 我推荐最近关于这个主题的两篇博
  • Sqoop Hive 退出,状态为 1

    当我执行时 sqoop import connect jdbc mysql localhost testdb table test hive table test hive import m 1 我收到以下错误消息 13 04 21 16
  • Spark错误:parquet.column.values.dictionary.PlainValuesDictionary$PlainIntegerDictionary

    我在从配置单元表读取 Spark 数据帧时遇到问题 我将数据框存储为 dataframe coalesce n files write option mergeSchema true mode overwrite parquet table
  • Hive“ANALYZE TABLE”如何从java执行

    我需要计算配置单元表中的行数 为此 我正在使用查询 ANALYZE TABLE p 7 COMPUTE STATISTICS noscan 我想通过java获取结果 我正在尝试以下操作 代码并没有运气 我得到的错误是 Exception i
  • ClassNotFoundException:org.apache.spark.SparkConf 与配置单元上的 Spark

    我正在尝试使用 SPARK 作为配置单元执行引擎 但出现以下错误 Spark 1 5 0 已安装 我正在使用 Hive 1 1 0 版本和 Hadoop 2 7 0 版本 hive emp表在 hive 中创建为 ORC 格式表 hive
  • 在 HIVE 中选择该月的第一天

    我正在使用 Hive 它与 SQL 类似 但对于 SQL 用户来说语法可能略有不同 我看过其他的stackoverflow 但它们似乎在SQL中具有不同的语法 我试图通过此查询获取该月的第一天 这给了我今天的一天 例如 如果今天是 2015
  • Hive 函数替换列值中的逗号

    我有一个配置单元表 其中字符串列的值为 12 345 有没有什么方法可以在插入此配置单元表期间删除逗号的配置单元函数 您可以使用regexp replace string INITIAL STRING string PATTERN stri
  • 如何将键值对加载到hive表中?

    以下是我的数据集 Jun name balaji id 101 Mar name kumar id 102 创建的表 create table sample month string name string id int row forma
  • 使用 MultipleOutputs 写入 MapReduce 中的 HBase

    我目前有一个 MapReduce 作业 它使用 MultipleOutputs 将数据发送到多个 HDFS 位置 完成后 我使用 HBase 客户端调用 在 MR 之外 将一些相同的元素添加到一些 HBase 表中 使用 TableOutp
  • 如何确定 HBase 表的大小?有什么命令可以这样做吗?

    我的 Hbase shell 上有多个表 我想将它们复制到我的文件系统上 有些表超过 100GB 但是 我的本地文件系统中只剩下 55GB 可用空间 因此 我想知道 hbase 表的大小 以便我可以仅导出小尺寸的表 任何建议表示赞赏 谢谢
  • 将 Hive 表导出到 hdfs 中的 csv

    我知道在 Hive 中将表保存到 csv 或其他文本文件 时 分隔符存在一个已知问题 所以我想知道你们是否可以帮助我解决这个问题 我有一个现有的表 表 A 我想将其以 csv 格式保存到 hdfs 通过阅读其他回复 我相信我必须首先创建一个
  • 如何在 ORC 分区 Hive 表的中间添加一列,并且仍然能够使用新结构查询旧分区文件

    目前 我在 Prod 中有一个分区 ORC 托管 错误地创建为内部优先 Hive 表 其中至少有 100 天的数据 按年 月 日 约 16GB 数据 分区 这个表大约有160列 现在我的要求是在这个表的中间添加一列 并且仍然能够查询旧数据
  • HBase如何实现对HDFS的随机访问?

    鉴于HBase是一个数据库 其文件存储在HDFS中 那么它如何实现对HDFS中单个数据的随机访问呢 这是通过什么方法实现的呢 From Apache HBase 参考指南 http hbase apache org book archite
  • HBase:创建多个表或包含多个列的单个表?

    什么时候创建多个表而不是创建具有大量列的单个表才有意义 据我了解 表通常只有几个列族 1 2 每个列族可以支持 1000 多个列 当 HBase 似乎在单个表中可能存在大量列时表现良好时 什么时候创建单独的表才有意义 在回答问题本身之前 让
  • 如果没有可用的指定分区路径,SPARK SQL 会失败

    我在 EMR 中使用 Hive Metastore 我可以通过 HiveSQL 手动查询表 但是当我在 Spark Job 中使用同一个表时 它说输入路径不存在 s3 导致 org apache hadoop mapred InvalidI
  • Hive 分区表上的 Spark 行为

    我用的是 Spark 2 实际上我不是执行查询的人 所以我不能包含查询计划 数据科学团队问过我这个问题 我们将 Hive 表划分为 2000 个分区并以 parquet 格式存储 当在 Spark 中使用相应的表时 执行器之间恰好执行了 2
  • 如何获取hive中的数据库用户名和密码

    正在编写jdbc程序来连接hive数据库 我希望在连接 url 中提供用户名和密码 我不知道如何使用 hive QL 获取用户名和密码 有人可以帮我吗 Exception in thread main java sql SQLNonTran
  • 是否可以使用 impala 查询包含 DATE 类型列的 Hive 表?

    每次我尝试在 IMPALA 中从 HIVE 中创建的表中选择 DATE 类型字段时 都会收到 AnalysisException Unsupported type DATE 有什么解决方法吗 UPDATE这是从 hive 创建表模式和 im
  • hbase api - 通过行ID列表获取数据行信息

    是否可以通过hbase java API通过行id列表获取hbase数据记录 例如 我有一个已知的 hbase 行 ID 列表 mykey1 myhash1 mykey1 myhash2 mykey1 myhash3 mykey2 myha
  • Hive(查找连续 n 列中的最小值)

    我在 Hive 中有一个表 有 5 列 即电子邮件 a first date b first date c first date d first date a b c d 是用户可以执行的 4 个不同操作 上表中的 4 列表示用户执行第一个

随机推荐

  • 用 C 语言来刷 LeetCode,网友直呼:那是真的牛批...

    公众号关注 GitHubDaily 设为 星标 xff0c 每天带你逛 GitHub xff01 大家好 xff0c 我是小 G 如果你是计算机科班出身 xff0c 那么 C 语言 xff0c 估计是你在初入编程时 xff0c 最早接触的编
  • 【pytorch torchvision源码解读系列—3】Inception V3

    框架中有一个非常重要且好用的包 xff1a torchvision xff0c 顾名思义这个包主要是关于计算机视觉cv的 这个包主要由3个子包组成 xff0c 分别是 xff1a torchvision datasets torchvisi
  • 【pytorch torchvision源码解读系列—5】DenseNet

    pytorch框架中有一个非常重要且好用的包 xff1a torchvision xff0c 顾名思义这个包主要是关于计算机视觉cv的 这个包主要由3个子包组成 xff0c 分别是 xff1a torchvision datasets to
  • Eclipse使用JDBC方式连接SQLServer2016

    Eclipse使用JDBC方式连接SQLServer2016 今天下午在查找很多JDBC连接SQL时发现大多数都是2012甚至更久以前的版本 xff0c 所以就此把步骤记录下来 xff0c 以免自己下次使用又忘记了 在连接的时候 xff0c
  • 魔改《自动化学报》Latex模板

    想用latex写一个中文文档 xff0c 看上了 自动化学报 的模板 xff0c 感觉不错 xff0c 下载下来在本地的tex live上编译 xff0c 报了一大串错 xff1b 上传到overleaf xff0c 还是报错 xff1b
  • TX2安装jetpack

    目前官网支持的下载为JetPack L4T 3 2 1 linux x64 b23和JetPack L4T 3 3 linux x64 b39 首先使用具有Ubuntu16 04的host主机 xff08 我使用的是个人笔记本 xff0c
  • TF-IDF算法

    TF IDF算法 TF IDF term frequency inverse document frequency 是一种用于信息检索与数据挖掘的常用加权技术 xff0c 常用于挖掘文章中的关键词 xff0c 而且算法简单高效 xff0c
  • 大数据009——MapReduce

    分布式离线计算框架MapReduce MapReduce是一种编程模型 Hadoop MapReduce采用Master slave 结构 只要按照其编程规范 xff0c 只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序
  • MapReduce实例——wordcount(单词统计)

    1 MR实例开发整体流程 最简单的MapReduce应用程序至少包含 3 个部分 xff1a 一个 Map 函数 一个 Reduce 函数和一个 main 函数 在运行一个mapreduce计算任务时候 xff0c 任务过程被分为两个阶段
  • MapReduce实例——好友推荐

    1 实例介绍 好友推荐算法在实际的社交环境中应用较多 xff0c 比如qq软件中的 你可能认识的好友 或者是Facebook中的好友推介 好友推荐功能简单的说是这样一个需求 xff0c 预测某两个人是否认识 xff0c 并推荐为好友 xff
  • Hadoop源码分析——JobClient

    1 MapReduce作业处理过程概述 当用户使用Hadoop的Mapreduce计算模型来进行处理问题时 xff0c 用户只需要定义所需的Mapper和Reduce处理函数 xff0c 还有可能包括的Combiner Comparator
  • 大数据010——Hive

    1 Hive 概述 Hive 是建立在 Hadoop 上的数据仓库基础构架 它提供了一系列的工具 xff0c 可以用来进行数据提取转化加载 xff08 ETL xff09 xff0c 这是一种可以存储 查询和分析存储在 Hadoop 中的大
  • 大数据011——Sqoop

    1 Sqoop 概述 Sqoop是Hadoop和关系数据库服务器之间传送数据的一种工具 它是用来从关系数据库如 xff1a MySQL xff0c Oracle到Hadoop的HDFS xff0c 并从Hadoop的文件系统导出数据到关系数
  • 大数据012——HBase

    1 HBase 简介 HBase Hadoop Database xff0c 是一个高可靠性 高性能 面向列 可伸缩 实时读写的分布式数据库 xff1b 在Hadoop生态圈中 xff0c 它是其中一部分且利用Hadoop HDFS作为其文
  • Hadoop源码分析——MapReduce输入和输出

    Hadoop中的MapReduce库支持集中不同的格式的输入数据 例如 xff0c 文本模式的输入数据的每一行被视为一个key value键值对 key是文件的偏移量 xff0c value是那一行的内容 另一种常见的格式是以key进行排序
  • 大数据013——Flume

    1 Flume 简介 Flume是由Cloudera软件公司提供的一个高可用的 xff0c 高可靠的 xff0c 分布式的海量日志采集 聚合和传输的系统 xff0c 后与2009年被捐赠了apache软件基金会 xff0c 为hadoop相
  • Hadoop源码分析——计算模型MapReduce

    MapReduce 是一个计算模型 xff0c 也是一个处理和生成超大数据集的算法模型的相关实现 用户首先创建一个Map函数处理一个基于key value pair的数据集合 xff0c 输出中间的基于 key value pair 的数据
  • 从SDLC到DevSecOps的转变

    OSSTMM 根据开源安全测试方法手册OSSTMM Open Source Security Testing Methodology Manual 的表述 安全测试包括但不限于以下几种做法 漏洞扫描 安全扫描 渗透测试 风险评估 安全审核
  • 大数据014——Storm 简介及入门案例

    分布式实时数据处理框架 Storm 1 Storm简介与核心概念 1 1 Storm 简介 全称为 Apache Storm xff0c 是一个分布式实时大数据处理系统 它是一个流数据框架 xff0c 具有最高的获取率 它比较简单 xff0
  • Hive与HBase整合详解

    参考之前小节的大数据010 Hive与大数据012 HBase成功搭建Hive和HBase的环境 xff0c 并进行了相应的测试 xff0c 并且在大数据011 Sqoop中实现Hive HBase与MySQL之间的相互转换 xff1b 本