• hadoop生态系统学习之路(八)hbase与hive的数据同步以及hive与impala的数据同步


    在之前的博文中提到,hive的表数据是能够同步到impala中去的。

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


    以下。笔者依次进行介绍。

    一、impala与hive的数据同步

    首先,我们在hive命令行运行show databases;能够看到有以下几个数据库:
    这里写图片描写叙述
    然后,我们在impala相同运行show databases;能够看到:
    这里写图片描写叙述
    眼下的数据库都是一样的。


    以下,我们在hive里面运行create database qyk_test;创建一个数据库,例如以下:
    这里写图片描写叙述
    然后,我们使用qyk_test这个数据库创建一张表,运行create table user_info(id bigint, account string, name string, age int) row format delimited fields terminated by ‘ ’;例如以下:
    这里写图片描写叙述
    此时。我们已经在hive这边创建好了,然后直接在impala这边运行show databases;能够看到:
    这里写图片描写叙述
    连qyk_test这个数据库都没有。
    接下来。我们在impala运行INVALIDATE METADATA;然后再查询能够看到:
    这里写图片描写叙述
    数据库和表都会同步过来。
    好了,笔者来做个总结:
    假设在hive里面做了新增、删除数据库、表或者数据等更新操作,须要运行在impala里面运行INVALIDATE METADATA;命令才干将hive的数据同步impala。
    假设直接在impala里面新增、删除数据库、表或者数据。会自己主动同步到hive,无需运行不论什么命令。

    二、hive与hbase的数据同步

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

    CREATE EXTERNAL TABLE user_sysc (key int, value string) ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' 
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
    WITH SERDEPROPERTIES ( 'serialization.format'='	', 'hbase.columns.mapping'=':key,info:value', 'field.delim'='	')
    TBLPROPERTIES ('hbase.table.name'='user_sysc')

    创建一张外部表指向hbase中的表,然后,我们在hive运行insert into table user_sysc select id,name from user_info;入一步份数据到user_sysc能够看到:
    这里写图片描写叙述
    然后。我们在hbase里面运行scan ‘user_sysc’能够看到:
    这里写图片描写叙述
    接下来,我们在hbase里面运行deleteall ‘user_sysc’, ‘11’删掉一条数据。例如以下:
    这里写图片描写叙述
    然后。我在hive里面查询看看。例如以下:
    这里写图片描写叙述
    说明自己主动同步过来了。因此,仅仅要创建hive表时。与hbase中的表做了映射。表名和字段名能够不一致,之后不管在hbase中新增删除数据还是在hive中。都会自己主动同步。
    假设在hive里面是创建的外部表须要在hbase中先创建。内部表则会在hbase中自己主动创建指定的表名。

    由于hive不支持删除等操作。而hbase里面比較方便,所以我们能够採用这样的方式。

  • 相关阅读:
    php 数据类型
    Django REST framework基础:视图和路由
    Django REST framework基础:序列化
    android 适配器 ArrayAdapter,SimpleAdapter的学习
    关于系统模块设计的一点疑问?
    看了看 #ifndef 和#pragma once 的区别
    ace.js 中文手册
    .net core 3.1发布时视图Views文件夹不被打打包成.dll文件解决办法
    Asp.net core应用在 Kubernetes上内存使用率过高问题分析
    .Net Core内存回收模式及性能测试对比
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7272848.html
Copyright © 2020-2023  润新知