SeaTunnel同步PostgreSQL数据至ClickHouse(1)

ClickHouse简介

ClickHouse最初是为Yandex.Metrica世界第二大Web分析平台而开发的。多年来一直作为该系统的核心组件被该系统持续使用着。目前为止,该系统在ClickHouse中有超过13万亿条记录,并且每天超过200多亿个事件被处理。它允许直接从原始数据中动态查询并生成报告。在Yandex.Metrica中,ClickHouse被用于多个场景中。它的主要任务是使用原始数据在线地提供各种数据报告。

ClickHouse是一种OLAP类型的列式数据库管理系统,ClickHouse完美的实现了OLAP和列式数据库的优势,因此在大数据量的分析处理应用中ClickHouse表现很优秀。

SeaTunnel简介

SeaTunnel是首个由国人主导并贡献到Apache软件基金会的大数据集成领域的顶级项目,SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。

SeaTunnel主要特性:

(1)有丰富的连接器Connector;

(2)有批处理和流处理两种处理方式;

(3)支持分布式快照算法,保证数据一致性;

(4)多引擎支持:SeaTunnel默认使用SeaTunnel引擎进行数据同步。SeaTunnel还支持使用Flink或Spark作为Connector的执行引擎;

(5)JDBC复用、数据库日志多表解析:SeaTunnel支持多表或全数据库同步,解决了JDBC连接过多的问题;支持多表或全库日志读写解析,解决了CDC多表同步场景重复读取解析日志的问题;

(6)高吞吐量、低延迟:SeaTunnel支持并行读写,提供稳定可靠的高吞吐量、低延迟的数据同步能力;

(7)实时监控:SeaTunnel支持数据同步过程中每一步的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小等信息。

4592cc850279ee5a1ea6f02ab1552672.jpeg

SeaTunnel 的运行过程如上图所示。用户配置作业信息,选择执行引擎提交作业。源连接器负责并行读取数据并将数据发送到下游转换或直接发送到接收器,接收器将数据写入目标。


为什么要将数据从PostgreSQL同步至ClickHouse?

从较高的层次上讲,ClickHouse是一个为分析系统设计的优秀OLAP数据库。相比之下,PostgreSQL是一个通用数据库,旨在成为一个多功能、可靠的OLTP数据库,用于具有高用户参与度的记录系统。因此,如果需要对几乎不可变的大型数据集(即OLAP)执行快速分析查询,那么ClickHouse将会是更好的选择。

SeaTunnel任务配置及启动

本示例将PostgreSQL的db_test数据库下test1表中的10000条数据,同步到ClickHouse数据库下default.test1中。

在PostgreSQL中建表,语句如下:

CREATE TABLE db_test.test1

(

    `id` INT PRIMARY KEY,

    `name` CHAR(50),

    `quantity` INT

)

向PostgreSQL中插入数据,格式如下:

insert into db_test.test1 values(1,'banana',1);

在ClickHouse中建表,语句如下:

CREATE TABLE default.test1

(

    `id` Int32,

    `name` String,

    `quantity` Int32

)

ENGINE = MergeTree

PRIMARY KEY id

ORDER BY id

1、下载jdbc

下载PostgreSQLjdbc并放至 '$SEATNUNNEL_HOME/plugins/jdbc/'目录下

2、编写配置文件

在'$SEATNUNNEL_HOME/config'目录下,新建配置文件pgsqltock.template

配置文件内容示例如下:

#配置并发数execution.parallelism以及工作模式job.mode

env {

  execution.parallelism = 2

  job.mode = "BATCH"

}

#配置数据源

source{

  Jdbc {

        url = "jdbc:postgresql://localhost:5432/db_test"

        driver = "org.postgresql.Driver"

        user = "postgres"

password="123456"

        query = "select * from test1"

    }

}

#转换配置,seatunal仅支持支持的基本函数和条件过滤操作。在本次示例中我们不需要做任务的Transform操作,所以这里为空,也可以将transform整个元素删除

#transform {

#sql {

#   query = ""

#  }

#}

#输出配置

sink {

  Clickhouse {

    host = "localhost:8123"

    database = "default"

    table = "test1"

    username = "default"

    password = "123456"

  }

}

3.启动任务

在'$SEATNUNNEL_HOME'目录下,使用启动命令:

./bin/seatunnel.sh --config ./config/pgsqltock.template -e local

此命令将以 local (本地模式) 运行您的SeaTunnel作业。

作业运行完成后可以看到如下信息:作业开始时间以及结束时间,读取10000条数据,写入ClickHouse也是10000条数据,用时3s。

03b41c57d3454b48220b6fa31ef5a6cc.jpeg

这样就将Postgresql的db_test数据库下test1表中的10000条数据,同步到ClickHouse中。至此,SeaTunnel就已经成功运行完成了。

进入ClickHouse,select * from default.test1查询写入情况,可以看到10000条测试数据已经写入ClickHouse。

620d40f5dbef3a10adb87480ef716ce9.jpeg

总结

本章我们运用数据集成平台SeaTunnel实现了PostgreSQL到ClickHouse的数据同步,使用SeaTunnel仅需要编写配置文件并下载对应的连接器即可。配置化、低代码、易维护是SeaTunnel最显著的特点。

接下来我们将介绍更多数据库到ClickHouse的数据同步流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/276606.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB】交叉验证求光滑因子的广义神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 交叉验证求光滑因子的广义神经网络时序预测算法的基本原理如下: 首先,我们需要了解什么是交叉验证和光滑因子。交叉验证是一种评估模型性能的常用方法&#xff0c…

Spring高手之路-Spring事务的传播机制(行为、特性)

目录 含义 七种事务传播机制 1.REQUIRED(默认) 2.REQUIRES_NEW 3.SUPPORTS 4.NOT_SUPPORTED 5.MANDATORY 6.NEVER 7.NESTED 含义 事务的传播特性指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行? 七…

Docker安装Grafana

1. 介绍 Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析、查询,然后进行可视化的展示,并能实现报警。参考官网地址:Run Grafana Docker image | Grafana documentation 2. 安装Grafana (1) . 下载 命令&…

Python中JSON模块的使用

1 JSON简介 JSON是JavaScript Object Notation即Javascript对象简谱的缩写。JSON是一种轻量级的数据交换格式,JSON数据是由键值对组成的结构,与Python中的字典类似,由尖括号包围的键值对组成,键和值的类型可以是字符串、数字、布…

elasticsearch系列六:索引重建

概述 我们再起初创建索引的时候由于数据量、业务增长量都并不大,常常不需要搞那么多分片或者说某些字段的类型随着业务的变化,已经不太满足未来需求了,再或者由于集群上面索引分布不均匀导致节点直接容量差异较大等等这些情况,此时…

Spark编程范例:Word Count示例解析

Apache Spark是一个强大的分布式计算框架,用于处理大规模数据。Word Count示例是Spark入门教程中的经典示例,旨在展示如何使用Spark来进行简单的文本处理和数据分析。本文将深入解析Word Count示例,以帮助大家更好地理解Spark的基本概念和编程…

【12.28】转行小白历险记-刷算法04

01两两交换链表中的节点 整体思路 1.要修改后一个节点的指向一定要知道前一个节点的指向才可以改变后面一个节点的 2.分情况奇数和偶数节点,终止条件很重要 3.虚拟头节点,是对我们操作的指针是不是头节点进行判断 02删除链表的倒数第N个节点 思路 …

低成本高效率易部署,Ruff工业数采网关+IoT云平台赋能工厂数字化管理

随着工业4.0的快速发展,工业物联网是工业企业实现数字化转型的重要助力,物联网技术的应用也越来越广泛。 作为连接设备与网络的关键节点,数据采集网关是连接工业设备与物联网平台的硬件设备,它负责将工业设备的数据采集、传输到物…

idea Spring Boot项目使用JPA创建与数据库链接

1.pom.xml文件中添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>…

c语言:求最小公倍数|练习题

一、题目 输入两个数&#xff0c;求两数的最小公倍数。 如图&#xff1a; 二、思路分析 1、先知道两个数里的最小值(比如&#xff1a;9和6&#xff0c;取6) 2、用2到6&#xff0c;5个数&#xff0c;同时除以9和6,得最小公约数&#xff1a;3 3、用9除33&#xff0c;6除32。得最小…

GitHub教程-自定义个人页制作

GitHub是全球最大的代码托管平台&#xff0c;除了存放代码&#xff0c;它还允许用户个性化定制自己的主页&#xff0c;展示个人特色、技能和项目。本教程旨在向GitHub用户展示如何制作个性化主页&#xff0c;同时&#xff0c;介绍了GitHub Actions的应用&#xff0c;可以自动化…

市场复盘总结 20231228

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整 昨日回顾&#xff1a; -- 今日 select * from ( SELECT top 100CODE,20231228 日期,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,…

关于log4j的那些坑

背景&#xff1a;工程中同时存在log4j.xml&log4j2.xml maven依赖如下&#xff1a; 此时工程实际使用的日志文件为log4j.xml 1、当同时设置log4j和log4j2的桥接依赖时 maven依赖如下&#xff1a; 此时启动会有警告日志&#xff1a; 点击告警日志链接&#xff1a;https://…

适用于各种危险区域的火焰识别摄像机,实时监测、火灾预防、安全监控,为安全保驾护航

火灾是一种极具破坏力的灾难&#xff0c;对人们的生命和财产造成了严重的威胁。为了更好地预防和防范火灾&#xff0c;火焰识别摄像机作为一种先进的监控设备&#xff0c;正逐渐受到人们的重视和应用。本文将介绍火焰识别摄像机在安全监控和火灾预防方面的全面应用方案。 一、火…

第十四章 Sentinel实现熔断与限流

Sentinel实现熔断与限流 gitee&#xff1a;springcloud_study: springcloud&#xff1a;服务集群、注册中心、配置中心&#xff08;热更新&#xff09;、服务网关&#xff08;校验、路由、负载均衡&#xff09;、分布式缓存、分布式搜索、消息队列&#xff08;异步通信&#x…

应用在网络摄像机领域中的国产音频ADC芯片

IPC&#xff1a;其实叫“网络摄像机”&#xff0c;是IP Camera的简称。它是在前一代模拟摄像机的基础上&#xff0c;集成了编码模块后的摄像机。它和模拟摄像机的区别&#xff0c;就是在新增的“编码模块”上。模拟摄像机&#xff0c;顾名思义&#xff0c;输出的是模拟视频信号…

设计模式-多例模式

设计模式专栏 模式介绍多例模式和单例模式的区别应用场景Spring中多例模式的优缺点代码示例Java实现多例模式Python实现多例模式 多例模式在spring中的应用 模式介绍 多例模式是一种创建型设计模式&#xff0c;属于对象创建类型。多例模式的特点是允许一个类有多个实例&#x…

语言模型:从n-gram到神经网络的演进

目录 1 前言2 语言模型的两个任务2.1 自然语言理解2.2 自然语言生成 3 n-gram模型4 神经网络语言模型5 结语 1 前言 语言模型是自然语言处理领域中的关键技术之一&#xff0c;它致力于理解和生成人类语言。从最初的n-gram模型到如今基于神经网络的深度学习模型&#xff0c;语言…

elasticsearch-hadoop.jar 6.8版本编译异常

## 背景 重新编译 elasticsearch-hadoop 包&#xff1b; GitHub - elastic/elasticsearch-hadoop at 6.8 编译 7.17 版本时很正常&#xff0c;注意设置下环境变量就好&#xff0c;JAVA8_HOME/.... 编译 6.8 版本时&#xff08;要求jdk8 / jdk9&#xff09;&#xff0c;出现…

数据库开发之子查询案例的详细解析

1.5 案例 基于之前设计的多表案例的表结构&#xff0c;我们来完成今天的多表查询案例需求。 准备环境 将资料中准备好的多表查询的数据准备的SQL脚本导入数据库中。 分类表&#xff1a;category 菜品表&#xff1a;dish 套餐表&#xff1a;setmeal 套餐菜品关系表&#x…