详解hbase与hive数据同步

 更新时间:2017年09月27日 10:39:06   投稿:mrr  
这篇文章主要介绍了详解hbase与hive数据同步的相关资料,需要的朋友可以参考下

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

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

一、impala与hive的数据同步

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

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

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

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

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

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

连qyk_test这个数据库都没有。

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

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

好了,笔者来做个总结:

如果在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里面执行scan‘user_sysc'可以看到:

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

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

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

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

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

相关文章

  • Kafka Java Producer代码实例详解

    Kafka Java Producer代码实例详解

    这篇文章主要介绍了Kafka Java Producer代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java中的concurrenthashmap集合详细剖析

    Java中的concurrenthashmap集合详细剖析

    这篇文章主要介绍了Java中的concurrenthashmap集合详细剖析,有参构造后第一次put时会进行初始化,由源码可知,会先判断所传入的容量是否>=最大容量的一半,如果满足条件,就会将容量修改为最大值,反之则会将容量改为所传入数*1.5+1,需要的朋友可以参考下
    2023-11-11
  • 详解Java日志正确使用姿势

    详解Java日志正确使用姿势

    这篇文章主要介绍了Java日志正确使用姿势,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java打乱ArrayList生成一个随机序列列表

    Java打乱ArrayList生成一个随机序列列表

    有时候会需要将一个ArrayList或者数组中的数字打乱,方便后续使用,比如随机出题、答案选项打乱、连线题打乱、抽奖号码打乱等等,把我自己写的一段代码贴出来分享给大家。
    2016-08-08
  • Maven中jar包冲突原理与解决办法

    Maven中jar包冲突原理与解决办法

    这篇文章主要介绍了Maven中jar包冲突原理与解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • MybatisPlus处理大表查询的实现步骤

    MybatisPlus处理大表查询的实现步骤

    在实际工作中当指定查询数据过大时,我们一般使用分页查询的方式一页一页的将数据放到内存处理,本文主要介绍了MybatisPlus处理大表查询的实现步骤,感兴趣的可以了解一下
    2024-08-08
  • JavaWeb入门教程之分页查询功能的简单实现

    JavaWeb入门教程之分页查询功能的简单实现

    这篇文章主要介绍了JavaWeb入门教程之分页查询功能的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java中Sentinel框架详解

    Java中Sentinel框架详解

    Sentinel是一个高可用、高扩展、高稳定性的开源流量控制和熔断降级框架,可以在分布式系统中实现实时的流量控制,防止系统因流量过大导致系统崩溃和服务降级,Sentinel面向所有的Java应用,本文就给大家详细介绍一下Java中Sentinel框架,需要的朋友可以参考下
    2023-06-06
  • java 取模与取余的区别说明

    java 取模与取余的区别说明

    这篇文章主要介绍了java 取模与取余的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 十分简单易懂的Java应用程序性能调优技巧分享

    十分简单易懂的Java应用程序性能调优技巧分享

    这篇文章主要介绍了十分简单易懂的Java性能调优技巧分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论