栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【hive】BinlogUpdatetoHive项目学习

【hive】BinlogUpdatetoHive项目学习

    项目最后更新时间为2016年,其中使用了hive streaming的api

    项目中主要使用canal工具读取mysql日志,主要定义了处理binlog日志的逻辑,然后将处理完的数据打入kafka中供spark streaming进行消费

    项目中的主要spark逻辑定义在了如下的函数中

    项目主要使用了spark streaming做数据处理,设置15s为一个周期,取出kafka中的数据,然后做数据清洗和处理,然后调用DStreamtoHiveBatchUtilLoan将数据更新到hive中

    在更新到hive的过程中,针对Hive中没有主键的概念,Hive使用事务Id+批次Id来唯一标识一条记录,对Hive中每条记录的增删改操作,Hive都会分配唯一的事务Id+桶Id+批次Id。 当发生增删改操作时,需要根据Mysql表的主键,查找到Hive表中对应的记录,即查找到对应的事务Id+批次Id。
    问题:
    当对Hive进行插入数据操作之后,需要存储事务Id+桶Id+批次Id,Hive原生的方法是将此组合Id存储在Hive表中,这样会造成查找时候的效率低下,严重影响增删改操作的性能。
    解决方案:
    将Hive的事务Id+桶Id+批次Id存储在Hbase中,Hbase支持实时查询,这样可以大幅减少查找的时间。

    使用HCatalog Streaming Mutation API向hive2中进行实时增删改数据.
    1.创建hive和hbase的连接
    2.解析数据,匹配insert操作,调用hive的insert操作,并将存储 数据ID:事务Id+桶Id+批次Id 数据put到hbase
    3.匹配update操作,在hbase中取出数据ID的数据,并取出批次Id进行解析,然后添加到updateArray中
    4.insert操作和update操作需要开启两个完全独立的Transaction和Coordinator,update操作在所有insert操作完成之后进行,hive对所有数据进行更新

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号