详解hbase与hive数据同步

作者:mrr 时间:2023-02-09 00:20:36 

hive的表数据是可以同步到impala中去的。一般impala是提供实时查询操作的,像比较耗时的入库操作我们可以使用hive,然后再将数据同步到impala中。另外,我们也可以在hive中创建一张表同时映射hbase中的表,实现数据同步。

下面,笔者依次进行介绍。

一、impala与hive的数据同步

首先,我们在hive命令行执行showdatabases;可以看到有以下几个数据库:

详解hbase与hive数据同步

然后,我们在impala同样执行showdatabases;可以看到:

详解hbase与hive数据同步

目前的数据库都是一样的。

下面,我们在hive里面执行create databaseqyk_test;创建一个数据库,如下:

详解hbase与hive数据同步

然后,我们使用qyk_test这个数据库创建一张表,执行create table user_info(idbigint, account string, name string, age int) row format delimitedfields terminated by ‘\t';如下:

详解hbase与hive数据同步

此时,我们已经在hive这边创建好了,然后直接在impala这边执行showdatabases;可以看到:

详解hbase与hive数据同步

连qyk_test这个数据库都没有。

接下来,我们在impala执行INVALIDATEMETADATA;然后再查询可以看到:

详解hbase与hive数据同步

数据库和表都会同步过来。

好了,笔者来做个总结:

如果在hive里面做了新增、删除数据库、表或者数据等更新操作,需要执行在impala里面执行INVALIDATEMETADATA;命令才能将hive的数据同步impala;

如果直接在impala里面新增、删除数据库、表或者数据,会自动同步到hive,无需执行任何命令。

二、hive与hbase的数据同步

首先,我们在hbase中创建一张表create ‘user_sysc', {NAME =>‘info'},然后,我们在hive中执行


CREATEEXTERNALTABLEuser_sysc(keyint,valuestring)ROWFORMATSERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITHSERDEPROPERTIES( 'serialization.format'='\t','hbase.columns.mapping'=':key,info:value','field.delim'='\t')
TBLPROPERTIES ('hbase.table.name'='user_sysc')

创建一张外部表指向hbase中的表,然后,我们在hive执行insert into tableuser_sysc select id,name fromuser_info;入一步份数据到user_sysc可以看到:

详解hbase与hive数据同步

然后,我们在hbase里面执行scan‘user_sysc'可以看到:

详解hbase与hive数据同步

接下来,我们在hbase里面执行deleteall ‘user_sysc',‘11'删掉一条数据,如下:

详解hbase与hive数据同步

然后,我在hive里面查询看看,如下:

详解hbase与hive数据同步

说明自动同步过来了。因此,只要创建hive表时,与hbase中的表做了映射,表名和字段名可以不一致,之后无论在hbase中新增删除数据还是在hive中,都会自动同步。

如果在hive里面是创建的外部表需要在hbase中先创建,内部表则会在hbase中自动创建指定的表名。

因为hive不支持删除等操作,而hbase里面比较方便,所以我们可以采用这种方式。

来源:http://blog.sina.com.cn/s/blog_9c6852670102wwyr.html

标签:hbase,hive,数据同步
0
投稿

猜你喜欢

  • android studio编译jar包或者aar包的方法教程详解

    2023-06-18 17:22:32
  • C#中添加窗口的步骤详解

    2021-12-19 16:30:29
  • android编程之ip2id程序实例

    2023-07-20 16:08:09
  • Android实现表情功能

    2023-03-05 06:46:27
  • springboot为异步任务规划自定义线程池的实现

    2022-12-05 01:13:02
  • 完美解决PermGen space异常的问题

    2023-08-19 07:54:55
  • SpringBoot2整合Ehcache组件实现轻量级缓存管理

    2022-06-18 18:11:16
  • 深入理解Java设计模式之命令模式

    2023-11-24 11:06:31
  • Android AndFix热修复原理详情

    2023-03-02 09:17:07
  • Spring Boot环境属性占位符解析及类型转换详解

    2023-10-21 20:37:35
  • Java中this关键字的用法详解

    2023-10-04 05:05:53
  • C#实现观察者模式(Observer Pattern)的两种方式

    2023-06-20 21:05:18
  • Java concurrency集合之 CopyOnWriteArrayList_动力节点Java学院整理

    2022-10-27 05:03:36
  • Flutter 队列任务的实现

    2023-07-07 17:25:14
  • IDEA导入Eclipse项目的方法步骤(图文教程)

    2023-07-17 09:45:09
  • java编程之基于SpringBoot框架实现扫码登录

    2023-02-14 02:39:28
  • C语言对CSV文件从最后往前一行一行读取的实现方法

    2023-06-24 08:05:57
  • 基于Java回顾之JDBC的使用详解

    2021-12-24 16:36:03
  • 深入理解Java8新特性之接口中的默认方法和静态方法

    2023-11-24 01:44:25
  • Java实现简单的迷宫游戏详解

    2022-11-22 05:00:52
  • asp之家 软件编程 m.aspxhome.com