CloudCanal x Hive 构建高效的实时数仓

2024-03-01 22:36

本文主要是介绍CloudCanal x Hive 构建高效的实时数仓,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简述

CloudCanal 最近对于全周期数据流动进行了初步探索,打通了Hive 目标端的实时同步,为实时数仓的构建提供了支持,这篇文章简要做下分享。

  • 基于临时表的增量合并方式
  • 基于 HDFS 文件写入方式
  • 临时表统一 Schema
  • 任务级的临时表

基于临时表的增量合并方式

Hive 目标端写入方式和 Doris 相似,需要在目标表上额外添加一个 __op(0:UPSERT,1:DELETE)字段作为标记位,实际写入时会先将源端的变更先写入临时表,最终合并到实际表中。

CloudCanal 的设计核心在于,每个同步表对应两张临时表,通过交替合并的方式,确保在一张临时表进行合并时,另一张能够接收新变更,从而提升同步效率和并发性。

image.png

Hive 提供了两种合并方式:INSERT OVERWRITE(所有版本均支持),MERGE INTO(Hive 2.2.0 之后支持且需要是 ACID 表)

-- INSERT OVERWRITE 语法
INSERT OVERWRITE [LOCAL] DIRECTORY directory1[ROW FORMAT row_format] [STORED AS file_format]
SELECT ... FROM ...-- MERGE INTO 语法
MERGE INTO <target table > AS T USING < source expression / table > AS S
ON <boolean expression1>WHEN MATCHED [AND <boolean expression2>] THEN
UPDATE SET <set clause list>WHEN MATCHED [AND <boolean expression3>] THEN
DELETEWHEN NOT MATCHED [AND <boolean expression4>] THEN INSERT VALUES<value list>

任务级的临时表

在大数据场景下,多表汇聚的情况十分普遍,CloudCanal 在构建临时表时,利用源端的订阅 Schema Table 信息,创建不同的临时表。

通过这种方式,无论是相同或不同的任务、相同或不同的 Schema(源端)、相同或不同的 Table(源端),都能将数据写入不同的临时表,最终合并到同一个实际表中,互相之间不会产生影响。

image.png

基于 HDFS 文件的写入方式

Hive 是建立在 Hadoop 体系上的数据仓库,而实际的数据存储在 HDFS 中。

如果直接通过 HQL 将增量数据写入 Hive,Hive 会将 HQL 转化为 MR Job,由于每一个 MR Job 处理速度相对较慢,这将导致增量性能极其差。

CloudCanal 在进行数据写入的时候,选择的是绕过 Hive 这层,直接写入 HDFS 文件系统。

目前支持 HDFS 文件格式:Text、Orc、Parquet。

临时表统一 Schema

基于临时表构建的增量方式,如果临时表分散在不同的 Schema 中,将给 DBA 的管理带来不便。

为了简化管理,CloudCanal 将所有临时表构建在统一的 Schema 下,并允许用户自定义其临时表路径。

示例

准备 CloudCanal

  • 下载安装 CloudCanal 私有部署版本

添加数据源

  • 数据源管理 -> 添加数据源, 添加 MySQL、Hive

    image.png
    image.png

创建同步任务

  • 选择源端 MySQL 和目标端 Hive,同步的 SchemaTable,高级参数含义参考 MySQL -> Hive

    image.png

  • 任务创建第四步,点击 配置分区键

  • 选择 分区键类型 以及 HDFS 文件类型

    image.png
    image.png

  • 点击下一步,创建任务即可

    image.png

未来方向

文件 Append 写入方式

目前 HDFS 文件写入处理,是每批数据写到一个文件中,并不会处理历史数据文件,更加合理的方式是基于历史文件进行 Append
追加,写满之后再切换为下一个文件。

提供参数优化 MR 处理速度

目前 CloudCanal 并没有提供参数入口用于优化 MR 处理速度,而是自动使用用户所配置的,未来 CloudCanal 将提供一个参数入口用于用户自定义每一个
MR Job 的处理并行度等优化参数。

支持 MERGE INTO 合并方式

目前 CloudCanal 仅支持 INSERT OVERWRITE 的合并方式,这种方式更为通用,而 MERGE INTO 此种合并方式速度更快,但限制较多,未来
CloudCanal 也会支持此种合并方式。

支持自定义分区键

目前 CloudCanal 仅支持按照日期选择分区键,目前暂时不支持更多分区键的选择,未来 CloudCanal 会提供更多分区键的选择。

总结

本篇文章简单介绍 CloudCanal 对于全生命周期的数据流动的初步探索,并通过 MySQL -> Hive 示例介绍其使用。

这篇关于CloudCanal x Hive 构建高效的实时数仓的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764051

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX