datax编译clickhousewriter插件,及mysql->ck自动增量

2023-11-12

安装clickhosue:

Clickhouse安装(新手必看)_初念、LL的博客-CSDN博客_clickhouse安装

安装mysql

clickhouse创建表,字段和需导入的mysql表相同;

datax实现mysql到clickhouse同步:

官方编译的datax包默认没有clickhousewriter插件,需下载源码手动编译:

GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。

下载并解压到本地

安装maven环境(参考网上教程,修改mirror为阿里云源)

安装jdk1.8(建议安装1.8版本,15以上版本编译会报错)

1.编译clickhousewriter

我们只需要clickhousewriter,将其他模块从datax目录下pom.xml中删除,否则其他组件可能找不到依赖,导致编译失败。

 

使用官方提供的命令进行编译:

mvn -U clean package assembly:assembly -Dmaven.test.skip=true

编译成功:

 

编译好的文件都在datax对应目录target下:

 

 

2.安装使用

下载官方编译好的包:

wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

下载后解压至本地某个目录,进入bin目录,即可运行同步作业:

$ cd  {YOUR_DATAX_HOME}/bin

$ python datax.py {YOUR_JOB.json}

目录结构:

bin目录下是python脚本文件,主要用来执行job文件(默认需要依赖Python2的环境,也可以修改为Python3)

conf目录存放一些配置文件

job目录下存放了一个job测试文件(我们通过datax-web生成的临时job文件不会放在这里,而是在data-web里边自己配置存放目录)

lib是依赖的一些jar包

log目录存放job文件的执行日志

plugin目录存放的是对不同数据源读取(Reader)和写入(Writer)的插件支持

如果没有在plugin目录下发现自己需要的Reader或者Writer则需要自己手动安装(比如ES的Reader和Writer)。

job文件是一个JSON格式的文件,每一个job文件都代表一个同步任务,执行job文件需要使用bin目录datax.py脚本。执行命令如下命令执行job任务:

python datax.py job文件

生成模板:

执行 python datax.py -r mysqlreader -w mysql_writer,然后将控制台生成的模板,保存到 datax的job目录下,存为一个json文件。也可以执行 python datax.py -r {YOUR_READER} -w {YOUR_WRITER} > ../job/test.json 直接将输出重定至到文件中

因为官方编译包默认没有带clickhosue插件,这里提示没有clickhousewriter插件,我们将刚才编译好的clickhouse插件放到服务器datax/plugin/writer目录下。

执行python datax.py  -r mysqlreader -w clickhousewriter

生成模板成功,基于模板进行修改:

{

    "job": {

        "content": [

            {

                "reader": {

                    "name": "mysqlreader",

                    "parameter": {

                        "column": [

                                "id",

                                "col1",

                                "col2",

                                "create_date"

                        ],

                        "connection": [

                            {

                                "jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/oms?useUnicode=true&characterEncoding=utf-8&useSSL=false"],

                                "table": [

                                        "test02"

                                ]

                            }

                        ],

                        "password": "xxxx",

                        "username": "root",

                        "where": ""

                    }

                },

                "writer": {

                    "name": "clickhousewriter",

                    "parameter": {

                        "batchByteSize": 134217728,

                        "batchSize": 65536,

                        "column": [

                                                        "id",

                                                        "col1",

                                                        "col2",

                                                        "create_date"

                        ],

                        "connection": [

                            {

                                "jdbcUrl": "jdbc:clickhouse://127.0.0.1:8123/test", 

                                "table": [

                                    "test02"

                                ]

                            }

                        ],

                        "dryRun": false,

                        "password": "xxx",

                        "postSql": [],

                        "preSql": [],

                        "username": "default",

                        "writeMode": "insert"

                    }

                }

            }

        ],

        "setting": {

            "speed": {

                "channel": "5"

            }

        }

    }

}

运行job

python datax.py ../job/mysql2clickhouse.json

 

3.增量同步

按天增量同步:

 

新增两条日期为今天的数据:

 

vi increment.sh

添加到定时,每天执行一次

#!/bin/bash  

. /etc/profile  

#当前时间,用于增量判断  

curr_time=$(date -d last-day +%Y-%m-%d)  

dodir=`pwd`  

#datax增量同步  

python /home/datax/datax/bin/datax.py  /home/datax/datax/job/mysqlday2clickhouse.json  -p "-Dcurr_time=$curr_time"  >>$dodir$(date "+%Y%m%d").log  2>&1 & 

json文件:

………

"where": "create_date='${curr_time}'"

………

通过datetime类型字段实现增量同步:

#!/bin/bash

. /etc/profile

set -x

#当前时间,用于增量判断

clickhouse_passwd=xxxxx

clickhouse_user=default

curr_time=$(date +%Y-%m-%d\ %H:%M:%S)

last_time=`clickhouse-client -u $clickhouse_user --password="$clickhouse_passwd" -q "select max(create_date) from test.test02"`

#datax增量同步

python /home/datax/datax/bin/datax.py  /home/datax/datax/job/mysqlIncremental2clickhouse.json  -p "-Dcurr_time='$curr_time' -Dlast_time='$last_time'" >>/home/datax/datax/bin/sh$(date "+%Y%m%d").log  2>&1 &

~

json:

将脚本添加到定时任务

插入几条数据

 

查看脚本输出,同步成功

部分转载:
DataX 同步mysql到clickhouse_福州-司马懿的博客-CSDN博客_datax支持clickhouse
 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

datax编译clickhousewriter插件,及mysql->ck自动增量 的相关文章

随机推荐

  • qt中lable中更改字体字号加粗等

    以下内容摘抄博客 https blog csdn net superbfly article details 53199731 utm medium distribute pc relevant none task blog BlogCom
  • 音频驱动篇之pop音攻略

    接触音频驱动工作也有2年的时间了 这这段时间里深刻感受了手机行业的更新换代是MB的迅速 2年的时间里 从TI到QUALCOMM 从android2 1到4 2 从单核到四核 经我参与的项目就有20款 日子是相当的难过 今天回头来说一些我在研
  • CentOS 使用nc命令进行端口扫描

    目录 CentOS 6 中nc命令的使用 CentOS 7 中nc命令的使用 使用nc命令可以探测目标主机的端口 但是在Centos 6 和 CentOS 7中这个命令的使用有所不同 甚至可以说功能已经不同 下面分别是CentOS 6 和
  • gitee密码修改后,pycharm权限不够提醒(windows10)

    问题 gitee密码修改后 pycharm更新代权限不够提醒 windows10 解决办法 gitee密码修改后 要在windows中同时进行修改 步骤如下 具体如图 控制面板 gt 所有控制面板项 gt 凭据管理器 gt Windows凭
  • vue 学习相关笔记大全

    与三阶段无关 框架是什么 封装与业务 功能 无关的代码块 简化了我们对于某些功能的代码量 但是我们需要记一套当前框架的语法 淘宝镜像 npm的服务器在国外 咱们国内下载的时候很慢 淘宝就自建了一个服务器 每个10分钟 就把npm的服务器里面
  • 这是一份面向3年以上Android开发者的中高级面试宝典,拔剑金九银十,大厂直通车

    前言 这是 拔剑金九银十 的第二篇文章 本文主要针对3年以上的Android开发者进阶面试中高级开发工程师而整理 三年以下小伙伴请移步 这是一份面向0 3年Android开发者的面试宝典 2020一线互联网大厂面试真题系统收录 希望可以对你
  • Arthur系统性详解微服务-完善中

    第一篇 微服务的意义 1 常见架构对比 第二篇 微服务的构建 1 微服务建模关注点及方法论 1 1 服务分类 1 2 服务模型 1 3 服务边界 1 4 服务数据 2 服务拆分和集成 2 1 服务拆分及方法论 2 1 1 服务拆分的维度 策
  • 配置环境说明

    工具及环境介绍 Eclipse 是一个开放源代码的 基于Java的可扩展开发平台 就其本身而言 它只是一个框架和一组服务 用于通过插件组件构建开发环境 Tomcat是一个应用服务器 他可以运行按照J2EE中的Servlet规范编写好的Jav
  • mysql数据库常用命令

    1 显示当前数据库服务器中的数据库列表 mysql gt show databases 2 创建数据库 mysql gt create database item character set utf8mb4 3 创建用户 mysql gt
  • unity3d 摄像机跟随角色时被物体遮挡解决方案

    unity3d 摄像机跟随角色时被物体遮挡解决方案 未被遮挡时 为了解决这个问题 在这里我们需要用到 Physics RaycastAll 使用方法详见圣典 首先 我们引入命名空间 System Collections Generic 然后
  • 电压电流双环控制PI参数计算01

    1 截止频率 将内环看作一个采样环节 对外环给定信号进行采样 同理驱动电路对内环给定信号进行采样 为保持环路稳定 外环截止频率 lt 内环截止频率 lt 开关频率 通常内环截止频率一般设置为开关频率的1 10 外环截止频率一般设置为开关频率
  • 内部排序算法比较(超详解)

    一 题目描述 通过随机数据比较各排序算法的关键字比较次数和关键字移动次数 以 及执行时间 取得直观感受 二 设计要求 一 需求分析 实现各排序算法 分别进行以下各组比较 并进行总结 一 各算法在不同规模下的比较 1 比较范围 直接插入排序
  • 辗转相除法求最大公约数 C/C++

    文章目录 辗转相除法的概念 用递归实现 用循环实现 辗转相除法的概念 辗转相除法是用来求两个正整数最大公约数的算法 古希腊数学家欧几里得在其著作 The Elements 中最早描述了这种算法 所以又被命名为欧几里得算法 扩展欧几里得算法可
  • 什么是Portlet ?

    什么是Portlet 作者 Sunil Patil 译者 observer 版权声明 任何获得Matrix授权的网站 转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者 Sunil Patil observer 原文地址 ht
  • springboot 之yaml配置文件注入

    配置文件 spring boot使用一个全局配置文件 配置文件的名称是固定的 application properties 和application yml文件 默认是 properties文件 配置文件的作用 修改spring boot自
  • MVC中Ajax的简单实现(多种传值方法)

    这几天在练习下MVC中Ajax中视图与控制器之间传值问题 时不时有些写法错误 导致传值失败 特把成功传值实现方法写下 Index cshtml视图
  • Python代码~加油

    import turtle as t import time 由于会重复用到多次以下操作 故写成函数 def hua a b c d t goto a b t down t goto c d t up def heng a b c hua
  • Unhandled exception:java.text.ParseException

    最近遇到一个这样的错 在我敲完这两句话后 下面自动跳红线了那么这是怎么回事呢 解决办法 在方法声明后加 throws Exception 为什么要这么写 throws 的作用是不在本方法中进程异常处理 而是抛给调用此方法的类中进行处理 解释
  • n个顾客等待时间最短(贪心算法)

    设有n个顾客同时等待一个服务 顾客i需要的服务时间为ti 1 lt i lt n 共有s处可以提供此服务 应如何安排n个顾客的服务才能使平均等待时间达到最短 平均的带时间时n个顾客等待服务时间的总和除以n 方法 先按从大到小排序 然后再挨个
  • datax编译clickhousewriter插件,及mysql->ck自动增量

    安装clickhosue Clickhouse安装 新手必看 初念 LL的博客 CSDN博客 clickhouse安装 安装mysql 在clickhouse创建表 字段和需导入的mysql表相同 datax实现mysql到clickhou