业务背景

unmatch_oppon_pro是一张Hive表,现在需要将其导入到HBase中。

Hive中的unmatch_oppon_pro的表结构如下:

字段 类型
id bigint
site_id int
product_code string
product_name string
product_url string
update_time string
product_price double
appraisal_num int
sold_num int

导入到HBase时,将 product_code 作为HBase表的 row_key

业务分析

利用Hive和HBase整合,可以实现通过Hive,读写HBase表,详细可以参考HBaseIntegration

实现方式

全量覆盖导入

代码如下:

create table unmatch_oppon_pro_hbase
(row_key         string,id              bigint,site_id         int,product_code    string,product_name    string,product_url     string,update_time     string,product_price   double,appraisal_num   int,sold_num        int
) STORED BY "org.apache.hadoop.hive.hbase.HBaseStorageHandler" WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:id,info:site_id,info:product_code,info:product_name,info:product_url,info:update_time,info:product_price,info:appraisal_num,info:sold_num") TBLPROPERTIES ("hbase.table.name"="unmatch_oppon_pro");insert overwrite table unmatch_oppon_pro_hbase
select product_code as row_key,id,site_id,product_code,product_name,product_url,update_time,product_price,appraisal_num,sold_num
from pms.unmatch_oppon_pro;

上面的代码是建立Hive内部表,为了让这张Hive内部表可以读写HBase表,需要如下操作:

  • create table时设置存储方式
STORED BY "org.apache.hadoop.hive.hbase.HBaseStorageHandler"
  • 设置Hive列名和HBase表的列对应
"hbase.columns.mapping" = ":key,info:id,info:site_id,info:product_code,info:product_name,info:product_url,info:update_time,info:product_price,info:appraisal_num,info:sold_num

其中":key"表示HBase的row_key,对应Hive表的第一个字段row_key string

"info:id,info:site_id,info:product_code,info:product_name,info:product_url,info:update_time,info:product_price,info:appraisal_num,info:sold_num"

表示HBase的列族和列,其中info是HBase表的列族,id、site_id、product_code等作为info的列

  • 可选:设置HBase的表名

"hbase.table.name"="unmatch_oppon_pro",这个如果不指定的话,最终生成的HBase表与Hive表同名

执行以后结果如下

hbase(main):001:0> describe 'unmatch_oppon_pro'
DESCRIPTION         ENABLED
'unmatch_oppon_pro', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE',
BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS =>  true
'1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER',
KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536',
IN_MEMORY=> 'false', BLOCKCACHE => 'true'}
1 row(s) in 2.4440 secondshbase(main):002:0> scan 'unmatch_oppon_pro',{LIMIT=>1}
ROW         COLUMN+CELL
1000001232  column=info:appraisal_num, timestamp=1432528332998, value=4
1000001232  column=info:id, timestamp=1432528332998, value=112932511
1000001232  column=info:product_code, timestamp=1432528332998, value=1000001232
1000001232  column=info:product_name, timestamp=1432528332998, value=\xE4\xB8\x80\xE7
1000001232  column=info:product_price, timestamp=1432528332998, value=318.0
1000001232  column=info:product_url, timestamp=1432528332998, value=http://item.jd.com/1000001232.html
1000001232  column=info:site_id, timestamp=1432528332998, value=1001
1000001232  column=info:update_time, timestamp=1432528332998, value=2015-05-22 01:58:57.0
1 row(s) in 0.1530 seconds

增量覆盖导入

代码如下:

create external table unmatch_oppon_pro_hbase
(row_key         string,id              bigint,site_id         int,product_code    string,product_name    string,product_url     string,update_time     string,product_price   double,appraisal_num   int,sold_num        int
) STORED BY "org.apache.hadoop.hive.hbase.HBaseStorageHandler" WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:id,info:site_id,info:product_code,info:product_name,info:product_url,info:update_time,info:product_price,info:appraisal_num,info:sold_num") TBLPROPERTIES ("hbase.table.name"="unmatch_oppon_pro");insert overwrite table unmatch_oppon_pro_hbase
select product_code as row_key,id,site_id,product_code,product_name,product_url,update_time,product_price,appraisal_num,sold_num
from pms.unmatch_oppon_pro;

实际上,增量更新与全量覆盖更新的区别,在于增量更新建立的是Hive的外表


全量覆盖和增量更新的区别

  • 区别如下

    • 增量更新,建立的是Hive外表;而全量覆盖建立的是Hive内部表;
    • 增量更新,必须先创建HBase表;而全量覆盖不需要事先建立HBase表;
    • 增量更新,是在原有的HBase表的基础上新增数据,不改变原有数据;而全量覆盖则会覆盖原有数据

[Hive]HBaseIntegration:通过Hive读写HBase相关推荐

  1. 【原创】大叔经验分享(25)hive通过外部表读写hbase数据

    在hive中创建外部表: CREATE EXTERNAL TABLE hive_hbase_table( key string, name string, desc string ) STORED B ...

  2. Hive 0.13.1 和HBase 0.98.6.1整合

    A:安装hadoop和HBase 参考:http://blog.csdn.net/wind520/article/details/39856353 B:安装Hive 1:下载:wget http:// ...

  3. hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据

    概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...

  4. hive建表映射到hbase

    1.  进入Hbase shell sz280328:cloudera-scm@/home/cloudera-scm>hbase shell 2.  建表,插入一行数据 hbase(main): ...

  5. java hive和hbase整合,Hive入门3–Hive与HBase的整合

    开场白: Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类 (Hive Storage Handle ...

  6. Spark读写HBase(主要讲解SHC的使用)

    前言 Spark读写HBase本身来说是没啥可以讲的,最早之前都是基于RDD的,网上的资料就太多了,可以参考: 参考链接1 参考链接2 其实都一样,后来有了Hortonworks公司的研发人员研发了一 ...

  7. [hive学习翻译]Hive - Introduction

    术语"大数据"用于大数据集的集合,包括大量,高速度和各种日益增加的数据.使用传统的数据管理系统,很难处理大数据.因此,Apache Software Foundation引入了一个 ...

  8. Hive大数据-Hive的安装与启动---大数据之Hive工作笔记0005

    然后我们再去看这个hive的安装,其实正确的学习路径应该是,首先去看 一下hadoop,因为大数据中,很多知识都是基于hadoop的,然后再去看hive,然后再去 看hbase,spark,flink ...

  9. Hive学习——单机版Hive的安装

    目录 一.基本概念 (一)Hive概念 (二)优势和特点 (三)Hive元数据管理 (四)Hive架构 (五)Hive Interface – 其他使用环境 二.Hive环境搭建 1.自动安装脚本 2 ...

最新文章

  1. IOSday01 连线和程序标识
  2. SQL Server:查看数据库用户权限
  3. Jenkins Job Buidler
  4. python中isinstance用法_Python内置isinstance函数详细介绍
  5. ABAP Modification browser SE95
  6. 【博客园2018总结帖】21天,在Github上获取 6300 star
  7. monterey系统怎么降级?macOS Monterey系统降回Big Sur的详细教程
  8. 对PHP输入输出流学习和认识
  9. 解决php中json_decode的异常JSON_ERROR_CTRL_CHAR
  10. 0-1总体分布下的参数假设检验示例一(SPSS实现)
  11. 2:url有规律的多页面爬取
  12. start-dfs.sh\stop-dfs.sh启动失败
  13. Win10 SAS9.4缺少增强型编辑器
  14. Google Chrome旧版本下载
  15. 可以联机的的单机游戏
  16. n1盒子当无线打印服务器,n1下ubuntu安装cups配置airprint网络打印服务器
  17. 区块链关键技术研究进展
  18. 手机VBUS OVP电路介绍
  19. 北京小客车摇号数据的一点质疑
  20. c语言中的字母占位符,C语言专题-基本数据类和占位符

热门文章

  1. google浏览器打开自动启动桔梗网的问题
  2. weblogic内存溢出解决办法
  3. 干货全拿走-用Excel实现自动获取基金行情及下载历史数据
  4. 共饮新年的第一口鸡汤
  5. centos 安装 pg数据库
  6. xunsearch详细教程
  7. xunsearch mysql_tp5整合xunsearch全文检索
  8. 旧电脑装html5,8年前老电脑如何升级?实战近十年的老电脑升级方案
  9. 零售行业如何开展私域流量运营?试试快鲸scrm
  10. Redis——基于尚硅谷Redis课程