原标题:Hive 整合 HBase 作者 | 广 责编 | 张文 头图 | CSDN 下载自视觉中国
HBase 固然可以存储数亿或数十亿行数据,但是对于数据分析来说不太友爱,它只提供了简朴的基于 Key 值的快速查询本领,没法举行大量的条件查询。 现有 HBase 的查询工具有许多如:Hive、Tez、Impala、Shark/Spark、Phoenix 等。本日重要说 Hive。 Hive 方便地提供了 Hive QL 的接口来简化 MapReduce 的利用, 而 HBase 提供了低耽误的数据库访问。假如两者联合,可以使用 MapReduce 的上风针对 HBase 存储的大量内容举行离线的盘算和分析。 Hive 和 HBase 通讯原理 Hive 与 HBase 整合的实现是使用两者自己对外的 API 接口相互通讯来完成的。这种相互通讯是通过 $HIVE_HOME/lib/hive-hbase-handler-{hive.version}.jar 工具类实现的。 通过 HBaseStorageHandler,Hive 可以获取到 Hive 表所对应的 HBase 表名、列簇和列、InputFormat、OutputFormat 类、创建和删除 HBase 表等。 Hive 访问 HBase 中表数据,实质上是通过 MapReduce 读取 HBase 表数据,实在现是在 MR 中,利用 HiveHBaseTableInputFormat 完成对 HBase 表的切分,获取 RecordReader 对象来读取数据。 对 HBase 表的切分原则是一个 Region 切分成一个 Split,即表中有多少个 Regions,MR 中就有多少个 Map;读取 HBase 表数据都是通过构建 Scanner,对表举行全表扫描,假如有过滤条件,则转化为 Filter。当过滤条件为 rowkey 时,则转化为对 rowkey 的过滤;Scanner 通过 RPC 调用 RegionServer 的 next来获取数据; 根本通讯原理如下:
Hive-HBase 详细步调 新建 HBase 表: 插入数据: 这里 HBase 有个列簇 f1,有两个列 c1 和 c2,新建 Hive 表关联 HBase 的这两列: 这里利用外部表映射到 HBase 中的表,Hive 对应的 hdfs 目次是空的,数据仍旧在 HBase 中,如许在 Hive 中删除表,并不会删除 HBase 中的表,否则,就会删除。 别的,除了 rowkey,其他三个字段利用 Map 布局来生存 HBase 中的每一个列族。 此中,参数表明如下: hbase.zookeeper.quorum: 指定 HBase 利用的 zookeeper 集群,默认端口是 2181,可以不指定;假如指定,格式为 zkNode1:2222,zkNode2:2222,zkNode3:2222 zookeeper.znode.parent 指定 HBase 在 zookeeper 中利用的根目次 hbase.columns.mapping Hive 表和 HBase 表的字段逐一映射,分别为:Hive 表中第一个字段映射:key(rowkey),第二个字段映射列族 f1:c1,第三个字段映射列族 f1:c2。 hbase.table.name HBase 中表的名字 也可以直接在 Hive 中创建表的同时,完成在 HBase 中创建表。 在 Hive 中查询 HBase 表: 也可以插入数据: 检察 HBase 的数据: Spark 读取提拔速率 Hive 关联 HBase 现实是底层是 MR,速率较慢,此时可以利用 spark sql 读取 Hive 表,举行查询操纵,从而访问 HBase 数据。 步伐员怎样制止陷入“内卷”、选择什么技能最有远景,中国开辟者近况与技能趋势毕竟是什么样?快来到场「2020 中国开辟者大观察」,更有丰富奖品送不绝! ☞ 我们差点就用不上 Java 了! ☞ 印度永世封禁了微信、百度、TikTok 等 59 款中国 App…… ☞ RISC-V 正在成为芯片天下中的 Linux 返回搜狐,检察更多 责任编辑: |