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

这篇具有很好参考价值的文章主要介绍了CloudCanal x Hive 构建高效的实时数仓。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述

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

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

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

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

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

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
DELETE
    WHEN NOT MATCHED [AND <boolean expression4>] THEN INSERT VALUES<value list>

任务级的临时表

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

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

基于 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

创建同步任务

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

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

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

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

未来方向

文件 Append 写入方式

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

提供参数优化 MR 处理速度

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

支持 MERGE INTO 合并方式

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

支持自定义分区键

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

总结

本篇文章简单介绍 CloudCanal 对于全生命周期的数据流动的初步探索,并通过 MySQL -> Hive 示例介绍其使用。文章来源地址https://www.toymoban.com/news/detail-837781.html

到了这里,关于CloudCanal x Hive 构建高效的实时数仓的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NineData:通过一个SQL语句构建实时数仓

    随着企业数据量呈现出爆炸式增长,跨部门、跨应用、跨平台的数据交互需求越来越频繁,传统的数据查询方式已经难以满足这些需求。同时,不同数据库系统之间的数据格式、查询语言等都存在差异,直接进行跨库查询十分困难。 虽然 MySQL、Oracle、PostgreSQL 等数据库系统都

    2024年02月05日
    浏览(48)
  • HIve数仓新零售项目ODS层的构建

    注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。 今天继续和大家分享一下HIve数

    2023年04月24日
    浏览(38)
  • flink 实时数仓构建与开发[记录一些坑]

    1、业务库使用pg数据库, 业务数据可以改动任意时间段数据 2、监听采集业务库数据,实时捕捉业务库数据变更,同时实时变更目标表和报表数据 实时数据流图与分层设计说明 1、debezium采集pg库表数据同步到kafka 【kafka模式】 2、flink 消费kafka写入pg或kafka 【upset-kafka,新版k

    2024年02月16日
    浏览(38)
  • 【大数据】Doris 构建实时数仓落地方案详解(一):实时数据仓库概述

    本系列包含: Doris 构建实时数仓落地方案详解(一):实时数据仓库概述 Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读 Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计 数据仓库的概念可以追溯到 20 世纪 80 年代,当时 IBM 的研究人员提出了商业数据

    2024年02月04日
    浏览(45)
  • GaussDB(DWS)基于Flink的实时数仓构建

    本文分享自华为云社区《GaussDB(DWS)基于Flink的实时数仓构建》,作者:胡辣汤。 大数据时代,厂商对实时数据分析的诉求越来越强烈,数据分析时效从T+1时效趋向于T+0时效,为了给客户提供极速分析查询能力,华为云数仓GaussDB(DWS)基于流处理框架Flink实现了实时数仓构建。在

    2024年04月22日
    浏览(42)
  • 基于 HBase & Phoenix 构建实时数仓(3)—— Phoenix 安装

    目录 一、主机规划 二、Phoenix 安装 1. 解压、配置环境 2. 复制两个文件 3. 重启 HBase 集群 4. 安装验证 (1)连接 HBase (2)视图映射 (3)表映射 参考:         继续上一篇,本篇介绍在同一环境中安装 Phoenix,并连接上篇部署的 HBase 集群。         所需安装包:Phoenix-5.1.

    2024年04月10日
    浏览(37)
  • 实时数仓构建:Flink+OLAP查询的一些实践与思考

    今天是一篇架构分享内容。 以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓 ,其技术方案的选择是我们在技术选型过程中最常见的问题之一。也是很多公司和业务支持过程中会实实在在遇到的问题。 很多人一提起实时数仓,就直接大谈特谈Hudi,Flink的流批

    2024年04月15日
    浏览(42)
  • 基于 HBase & Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

    目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数(可选) 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新的空 ZooKeeper 数据目录和事务日志目录 4

    2024年03月10日
    浏览(50)
  • 【大数据】Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读

    本系列包含: Doris 构建实时数仓落地方案详解(一):实时数据仓库概述 Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读 Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计 Apache Doris 是由 百度 研发并开源的数据库项目。 Doris 2008 年开始在百度内部立项,

    2024年02月07日
    浏览(45)
  • Flink CDC和Flink SQL构建实时数仓Flink写入Doris

    软件环境 Flink1.13.3 Scala 2.12 doris 0.14 一、MySQL 开启binlog日志、创建用户 1.开启bin log MySQL 8.0默认开启了binlog,可以通过代码show variables like \\\"%log_bin%\\\";查询是否开启了,show variables like \\\"%server_id%\\\";查询服务器ID。 上图分别显示了bin long是否开启以及bin log所在的位置。 2.创建用户 C

    2024年02月02日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包