datax介绍和用法

Datax

简介

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

使用说明:

DataX支持数据源链接:https://github.com/alibaba/DataX/blob/master/introduction.md

DataX安装

DataX安装

1、上传依赖、
2、解压
tar -zxvf datax.tar.gz
3、配置环境变量
vim /etc/profile
添加环境变量
source /etc/profile

注意:DataX所使用的环境为Python2,Python3环境下执行会报错

在这里插入图片描述

DataX使用

测试案例

Mysql2Mysql

stream2stream.json

{"job": {"content": [{"reader": {"name": "streamreader","parameter": {"sliceRecordCount": 10,"column": [{"type": "long","value": "10"},{"type": "string","value": "hello,你好,世界-DataX"}]}},"writer": {"name": "streamwriter","parameter": {"encoding": "UTF-8","print": true}}}],"setting": {"speed": {"channel": 5}}}
}

channel表示 并发数

“print”: true 表示打印到控制台

“sliceRecordCount”: 10 表示每个并发生成的测试数据条数

运行

 datax.py stream2stream.json

结果显示五十条数据,因为通道channel:5和"sliceRecordCount": 10

Mysql2Mysql .json

{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"where": "clazz like '文科%'","splitPk": "id","connection": [{"table": ["student"],"jdbcUrl": ["jdbc:mysql://master:3306/data?useSSL=false"]}]}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"connection": [{"jdbcUrl": "jdbc:mysql://master:3306/data?useSSL=false&useUnicode=true&characterEncoding=utf-8","table": ["datax_stu"]}]}}}]}
}

writeMode: insert表示数据插入 update表示根据目标表的主键进行数据的更新操作 replace 表示主键覆盖写入

Mysql2Mysql-qureySQL

{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","splitPk": "id","connection": [{"querySql": ["select t2.*,t1.total_score FROM( SELECT student_id ,sum(score) as total_score from score  GROUP BY student_id ) t1 join student t2 on t1.student_id = t2.id
"],"jdbcUrl": ["jdbc:mysql://master:3306/student?useSSL=false"]}]}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod","total_score"],"connection": [{"jdbcUrl": "jdbc:mysql://master:3306/data?useSSL=false&useUnicode=true&characterEncoding=utf-8","table": ["score_student"]}]}}}]}
}
Mysql2HDFS

mysql2hdfs

{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","splitPk": "id","connection": [{"querySql": ["select t2.*,t1.total_score FROM( SELECT student_id ,sum(score) as total_score from score  GROUP BY student_id ) t1 join student t2 on t1.student_id = t2.id
"],"jdbcUrl": ["jdbc:mysql://master:3306/student?useSSL=false"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://master:9000","fileType": "text","path": "/user/hive/warehouse/bigdata.db/students_scores","fileName": "students_scores","column": [{"name": "id","type": "STRING"},{"name": "name","type": "STRING"},{"name": "age","type": "INT"},{"name": "gender","type": "STRING"},{"name": "clazz","type": "STRING"},{"name": "last_mod","type": "STRING"},{"name": "total_score","type": "INT"}],"writeMode": "append","fieldDelimiter": ","}}}]}
}
  • hdfs2mysql

    {"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader":  {"name": "hdfsreader","parameter": {"path": "/datax/stu_score/*","defaultFS": "hdfs://master:9000","column": [{"index": "0","type": "STRING"},{"index": "1","type": "STRING"},{"index": "2","type": "STRING"},{"index": "3","type": "STRING"},{"index": "4","type": "STRING"},{"index": "5","type": "STRING"}],"fileType": "text","encoding": "UTF-8","fieldDelimiter": ","}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "123456","column": ["id","name","age","gender","clazz","total_score"],"connection": [{"jdbcUrl": "jdbc:mysql://master:3306/datax?useSSL=false&useUnicode=true&characterEncoding=utf-8","table": ["stu_score_2"]}]}}}]}
    }
    

    {“message”:“No enum constant com.alibaba.datax.plugin.unstructuredstorage.reader.UnstructuredStorageReaderUtil.Type.INT”,“record”:[{“byteSize”
    :10,“index”:0,“rawData”:“1500100001”,“type”:“STRING”},{“byteSize”:3,“index”:1,“rawData”:“施笑槐”,“type”:“STRING”}],“type”:“reader”}

    HDFS中读取文本数据时,所有列的类型都可以给定一个String类型,在插入数据到Mysql时,会做自动类型转换

Hbase2Mysql
  • Mysql2Hbase

    {"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","splitPk": "id","connection": [{"querySql": ["select t2.*,t1.total_score FROM( SELECT student_id ,sum(score) as total_score from score  GROUP BY student_id ) t1 join student t2 on t1.student_id = t2.id"],"jdbcUrl": ["jdbc:mysql://master:3306/student?useSSL=false"]}]}},"writer": {"name": "hbase11xwriter","parameter": {"hbaseConfig": {"hbase.zookeeper.quorum": "master:2181,node1:2181,node2:2181"},"table": "score_stu","mode": "normal","rowkeyColumn": [{"index":0,"type":"string"},{"index":-1,"type":"string","value":"_"},{"index":6,"type":"string"}],"column": [{"index":1,"name": "info:name","type": "string"},{"index":2,"name": "info:age","type": "string"},{"index":3,"name": "info:gender","type": "string"},{"index":4,"name": "info:clazz","type": "string"},{"index":6,"name": "info:total_score","type": "string"}],"encoding": "utf-8"}}}]}
    }
  • hbase2mysql

    {"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 10,"percentage": 0.02}},"content": [{"reader":  {"name": "hbase11xreader","parameter": {"hbaseConfig": {"hbase.zookeeper.quorum": "master:2181"},"table": "api:stu","encoding": "utf-8","mode": "normal","column": [{"name": "rowkey","type": "string"},{"name": "info: name","type": "string"},{"name": "info: age","type": "string"},{"name": "info: gender","type": "string"},{"name": "info: clazz","type": "string"}]}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "123456","column": ["id","name","age","gender","clazz"],"connection": [{"jdbcUrl": "jdbc:mysql://master:3306/datax?useSSL=false&useUnicode=true&characterEncoding=utf-8","table": ["stu"]}]}}}]}
    }
    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧图书馆为什么用rfid电子标签而不是磁条

智慧图书馆一般都会使用RFID技术,而不是磁条。以下是几个原因: 1. 效率更高:RFID技术可以实现非接触式读取,图书馆工作人员可以同时读取多本书的信息,大大提高了借还书的效率。 2. 数据量更大:RFID标签可以…

大模型-入门小知识

大模型是什么 大量参数(上亿)深度学习模型 人工只能包含机器学习,深度学习,深度学习包括大模型 单个神经元的计算模型: 大模型是怎么训练的 之前是算法(神经网络)----> 训练(门槛降低&…

LlamaIndex代理的逐步执行框架,包括代理运行器和代理工作者

原文地址:llamaindex-agent-step-wise-execution-framework-with-agent-runners-agent-workers 2024 年 4 月 15 日 LlamaIndex lower-level 代理 API 提供了一系列功能,超出了仅从头到尾执行用户查询的范围。 介绍 LlamaIndex 提供了一个全面的代理 API…

设计模式- 中介者模式(Mediator)

1. 概念 中介者模式(Mediator Pattern),是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合变得松散,并且可以独立地改变它们之间的交互。 2. 原理结构图 抽…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中,由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件,下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的: from selenium import webdriver …

FPGA“题目周周练”活动来啦!

Hi,各位编程精英er~ 不知道大家的FPGA学习之旅到达哪一个阶段了呢?又在这个过程中遇到了哪些困惑? 作为一门高度专业化且充满挑战的技术,FPGA的学习是一场不断思考、认知、持续深化的过程。在这个过程中,思维的敏捷和…

【vue2】实现微信截图(复制图片)在项目内可粘贴

需求 后台管理在上传图片地方需要将复制的图片粘贴上传 一、添加事件 在原有上传组件的基础上添加 paste事件 二、方法 onPaste(e) {const items (e.clipboardData || window.clipboardData).items;let blob null;for (let i 0; i < items.length; i) {if (items[i].ty…

034——从GUI->Client->Server->driver实现读写EEPROM

目录 1、修改GUI 2、修改client 3、 修改server 4、 修改driver_handele 5、 测试和提交 1、修改GUI 之前叫IIC&#xff0c;我们其实是借助EEPROM来测试IIC是不是好用所以名称改一改 长得有点奇怪 这样虽然一样长了但是还是很奇怪。 就先这样吧 layout_l [[tool.name(N…

100个实用电气知识

在当今社会&#xff0c;电力作为日常生活和工作中不可或缺的能源&#xff0c;扮演着越来越重要的角色。为了更好地利用电力资源&#xff0c;了解电气知识成为了越来越多人的需求。在电气领域&#xff0c;有很多实用的知识&#xff0c;这些知识对于从事电气工作的人来说是非常重…

二叉树oj题(2)

1.二叉树的最近公共祖先 解题思路&#xff1a;方法一&#xff1a; 1.先判断p或者q 是不是 root当中的一个 2.左子树当中递归査找p或者q 3.右子树当中递归查找p或者q 如何查找: root 的 left 和 right 都不为空 ->root root的 left 为空 right 不为空->right这一侧找…

出海不出局 | 小游戏引爆高线市场,新竞争态势下的应用出海攻略

出海小游戏&#xff0c;出息了&#xff01; 根据 Sensor Tower 近期发布的“2024 年 3 月中国手游收入 TOP30”榜单&#xff0c;出海小游戏在榜单中成了亮眼的存在。 其中&#xff0c;《菇勇者传说》3 月海外收入环比增长 63%&#xff0c;斩获出海手游收入增长冠军&#xff0c…

vue element-ui 表格横向滚动条在合计项下方

目前效果 需求效果 1.隐藏bodyWrapper滚动条&#xff0c;显示footerWrapper滚动条 css代码如下&#xff1a; div ::v-deep .el-table--scrollable-x .el-table__body-wrapper{overflow-x: hidden!important;z-index: 2!important;} div ::v-deep .el-table__footer-wrapper …

理发师问题的业务建模方案

背景 题目&#xff1a; 假设有一个理发店只有一个理发师&#xff0c;一张理发时坐的椅子&#xff0c;若干张普通椅子顾客供等候时坐。没有顾客时&#xff0c;理发师睡觉。顾客一到&#xff0c;叫醒理发师 。如果理发师没有睡觉&#xff0c;而在为别人理发&#xff0c;他就会坐…

Android—— log的记忆

一、关键log 1.Java的 backtrace(堆栈log) 上述是一个空指针异常&#xff0c;问题出现在sgtc.settings&#xff0c;所以属于客户UI问题。 2.WindowManager(管理屏幕上的窗口和视图层次结构) 3.ActivityManager(管理应用程序生命周期和任务栈) 4.wifi操作 (1) 连接wifi&#…

开源大模型Llama3,堪比GPT-4。手把手本地安装,纯小白可操作,不需要编程经验,国内可下载,可视化使用。

最近最劲爆科技动态&#xff0c;Meta开源Llama3模型&#xff0c;最强开源模型。 Llama3发布后&#xff0c;扎克伯格亲自给媒体表示“要超越所有人&#xff0c;做最领先AI”。 吴恩达等一众大佬表示祝贺。 在线体验地址&#xff1a;https://www.meta.ai/ 不过国内在线体验基本…

OpenWRT磁盘扩容(PVE虚拟机方案)

官方扩容指导文档 PVE给虚拟机磁盘扩容 给虚拟机磁盘扩容&#xff0c;选中OpenWRT的硬盘&#xff0c;随后选择调整大小 输入增量大小&#xff0c;即增加多少磁盘空间给硬盘。这里我选择增加4G 进入OpenWRT控制台界面安装一些linux常用查看磁盘的工具&#xff08;也可以通过网…

EasyPoi实现简单的Excel导出、导入

EasyPoi实现Excel导出、导入 下面这种方式不需要模板&#xff0c;更加方便但是不能进行复杂的导出 一、引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version><…

2024商业地产五一劳动节健康大会朋克养生市集活动策划方案

2024商业地产五一劳动节健康大会朋克养生市集&#xff08;带薪健康 快乐打工主题&#xff09;活动策划方案 活动策划信息&#xff1a; 方案页码&#xff1a;53页 文件格式&#xff1a;PPT 方案简介&#xff1a; 打工不养生 赚钱养医生 期待已久的五一假期&#xff0c; …

mysql download 2024

好久没在官网下载 mysql server 安装包。今天想下载发现&#xff1a; 我访问mysql官网的速度好慢啊。mysql server 的下载页面在哪里啊&#xff0c;一下两下找不到。 最后&#xff0c;慢慢悠悠终于找到了下载页面&#xff0c;如下&#xff1a; https://dev.mysql.com/downlo…

什么是全局特征,什么又是局部特征

全局特征和局部特征是用来描述数据中信息的两种不同方式&#xff0c;特别是在图像处理、模式识别和机器学习领域中经常被提到。它们有助于理解和分析数据的不同层面&#xff1a; 全局特征&#xff08;Global Features&#xff09; 全局特征描述了整个数据集的整体属性。在图像…