大数据学习(57)-DataX基础

&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

一、简介

DataX是一个开源的数据同步工具,主要用于在不同数据存储之间高效迁移数据。

DataX架构原理:为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

二、DataX 的核心概念

  1. 数据同步模型

    • DataX 采用 Reader -> Channel -> Writer 的模型:

      • Reader:从源数据源读取数据。

      • Channel:数据传输通道,负责数据的缓冲和传输。

      • Writer:将数据写入目标数据源。

  2. 插件化架构

    • DataX 的核心是插件化设计,支持多种数据源的读写插件(如 MySQL、Oracle、HDFS、Hive 等)。

    • 用户可以根据需求扩展自定义插件。

  3. 任务配置

    • 通过 JSON 配置文件定义数据同步任务,包括 Reader、Writer 和 Channel 的配置。

二、DataX 的重点

  1. 配置文件编写

    • 理解 JSON 配置文件的结构,包括 jobcontentreader 和 writer 等部分。

    • 示例:

      {
        "job": {
          "content": [
            {
              "reader": {
                "name": "mysqlreader",
                "parameter": {
                  "username": "root",
                  "password": "123456",
                  "column": ["id", "name"],
                  "connection": [
                    {
                      "table": ["user"],
                      "jdbcUrl": ["jdbc:mysql://localhost:3306/test"]
                    }
                  ]
                }
              },
              "writer": {
                "name": "hdfswriter",
                "parameter": {
                  "defaultFS": "hdfs://localhost:9000",
                  "fileType": "text",
                  "path": "/user/hive/warehouse/user",
                  "fileName": "user.txt"
                }
              }
            }
          ],
          "setting": {
            "speed": {
              "channel": 3
            }
          }
        }
      }

      在 DataX 中,JSON 配置文件是定义数据同步任务的核心部分。配置文件通常包括 jobcontentreader 和 writer 等部分,每个部分都有其特定的作用。

一、各部分的作用与配置

1. job
  • 作用:定义整个数据同步任务的全局配置。

  • 配置内容主要包括

    • content:定义数据同步的具体内容,包括 reader 和 writer

    • setting:定义任务的全局设置,如并发度、速度限制等。

  • 示例

    "job": {
      "content": [
        {
          "reader": { ... },
          "writer": { ... }
        }
      ],
      "setting": {
        "speed": {
          "channel": 3
        }
      }
    }
2. content
  • 作用:定义数据同步的具体内容,包括数据读取(reader)和数据写入(writer)。

  • 配置内容

    • reader:配置数据源读取插件。

    • writer:配置数据目标写入插件。

  • 示例

    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "123456",
            "column": ["id", "name"],
            "connection": [
              {
                "table": ["user"],
                "jdbcUrl": ["jdbc:mysql://localhost:3306/test"]
              }
            ]
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "defaultFS": "hdfs://localhost:9000",
            "fileType": "text",
            "path": "/user/hive/warehouse/user",
            "fileName": "user.txt"
          }
        }
      }
    ]
3. reader

定义数据源读取插件及其配置。

  • 配置内容

    • name:指定 Reader 插件的名称(如 mysqlreaderoraclereader 等)。

    • parameter:配置 Reader 插件的具体参数,如连接信息、表名、字段等。

4. writer

定义数据目标写入插件及其配置。

  • 配置内容

    • name:指定 Writer 插件的名称(如 hdfswritermysqlwriter 等)。

    • parameter:配置 Writer 插件的具体参数,如连接信息、文件路径、字段等。

二、channel(并发通道数)

  1. 作用

    • channel 控制任务的并发度,即同时执行的数据同步任务数。

    • 增加 channel 可以提高数据同步的速度,但也会增加对数据源和目标系统的压力。

  2. 配置依据

    • 数据源性能:如果数据源(如 MySQL、Oracle)的读写性能较高,可以增加 channel

    • 目标系统性能:如果目标系统(如 HDFS、Hive)的写入性能较高,可以增加 channel

    • 网络带宽:如果网络带宽充足,可以增加 channel

    • 硬件资源:如果运行 DataX 的机器 CPU 和内存资源充足,可以增加 channel

  3. 推荐配置

    • 初始值可以设置为 3-5,然后根据任务执行情况逐步调整。

    • 如果数据量较大,可以设置为 10-20,但需要监控系统负载。

  4. 示例

    "setting": {
      "speed": {
        "channel": 5
      }
    }

三、errorLimit(错误限制)

  1. 作用

    • errorLimit 控制任务对错误的容忍度,包括记录数错误和百分比错误。

    • 当错误超过限制时,任务会失败。

  2. 配置依据

    • 数据质量:如果数据质量较高,可以设置较低的错误容忍度。

    • 业务需求:如果任务对数据准确性要求较高,可以设置较低的错误容忍度。

  3. 推荐配置

    • record:允许的最大错误记录数,默认值为 0。可以设置为 10 或更高。

    • percentage:允许的最大错误百分比,默认值为 0.02(即 2%)。可以设置为 0.05(即 5%)。

  4. 示例

    "setting": {
      "errorLimit": {
        "record": 10,
        "percentage": 0.05
      }
    }

四、综合配置示例

以下是一个综合考虑 channelbyte 和 errorLimit 的配置示例:

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "123456",
            "column": ["id", "name"],
            "connection": [
              {
                "table": ["user"],
                "jdbcUrl": ["jdbc:mysql://localhost:3306/test"]
              }
            ]
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "defaultFS": "hdfs://localhost:9000",
            "fileType": "text",
            "path": "/user/hive/warehouse/user",
            "fileName": "user.txt"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 5,
        "byte": 10485760
      },
      "errorLimit": {
        "record": 10,
        "percentage": 0.05
      }
    }
  }
}

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

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

相关文章

【DeepSeek】Ubuntu快速部署DeepSeek(Ollama方式)

文章目录 人人都该学习的DeepSeekDeepSeek不同版本功能差异DeepSeek与硬件直接的关系DeepSeek系统兼容性部署方式选择部署步骤(Ollama方式)1.选定适合的deepseek版本2.环境准备3.安装Ollama4.部署deepseek5.测试使用 人人都该学习的DeepSeek DeepSeek 作…

Go加spy++隐藏窗口

最近发现有些软件的窗口就像狗皮膏药一样,关也关不掉,一点就要登录,属实是有点不爽了。 窗口的进程不能杀死,但是窗口我不想要。思路很简单,用 spy 找到要隐藏的窗口的句柄,然后调用 Windows 的 ShowWindo…

最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)

前期所需: 1.apache-tomcat-10.1.18-windows-x64(tomcat 10.1.8版本或者差不多新的版本都可以) 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了(一定先配置MAVEN再搞TOMCAT会事半功倍很多) 如果有没配置…

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台(Intelligent AI Travel Recommendation Platform)是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…

linux 系统内核查询

1. 使用uname命令 uname命令可以用来显示系统信息,包括内核版本。 查看完整的内核版本信息:uname -a [rootlocalhost ~]# uname -a Linux localhost.localdomain 4.18.0-448.el8.x86_64 #1 SMP Wed Jan 18 15:02:46 UTC 2023 x86_64 x86_64 x86_64 GN…

静态时序分析:报告命令report_timing详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定时序路径起点 指定时序路径经过点 指定时序路径终点 指定不报告的路径 指定路径类型 指定延迟类型 指定每个终点报告的最大时序路径数 指定每个时序组的…

DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

qt 播放pcm音频

一、获取PCM音频 ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 -f s16le output.pcm -acodec pcm_s16le:指定16位小端PCM编码格式(兼容性最佳)-ar 44100:设置采样率为CD标准44.1kHz(可替换为16000/8000等&a…

OpenCV计算摄影学(15)无缝克隆(Seamless Cloning)调整图像颜色的函数colorChange()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::colorChange 是 OpenCV 中用于调整图像颜色的函数。它允许你通过乘以不同的系数来独立地改变输入图像中红色、绿色和蓝色通道的强度&#xf…

WPS AI+office-ai的安装、使用

** 说明:WPS AI和OfficeAI是两个独立的AI助手,下面分别简单讲下如何使用 ** WPS AI WPS AI是WPS自带AI工具 打开新版WPS,新建文档后就可以看到菜单栏多了一个“WPS AI”菜单,点击该菜单,发现下方出现很多菜单&#xf…

绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 通过 Lr 软件丰富的工具和功能,对风景照片在色彩、影调等方面进行调整。例如利用基本参数调整选项,精准控制照片亮度、对比度、色温、色调等基础要素;运用 HSL 面板可对不同色彩的色相、饱和度以及明亮度进行单独调节;利…

【Manus资料合集】激活码内测渠道+《Manus Al:Agent应用的ChatGPT时刻》(附资源)

DeepSeek 之后,又一个AI沸腾,冲击的不仅仅是通用大模型。 ——全球首款通用AI Agent的破圈启示录 2025年3月6日凌晨,全球AI圈被一款名为Manus的产品彻底点燃。由Monica团队(隶属中国夜莺科技)推出的“全球首款通用AI…

团队学习—系统思考

3月的团队学习将继续深入,与海外顾问共同探讨系统思考和心智模式的核心内容。回顾过去,这些每月一次的学习不仅成为我们审视思维框架的常规途径,更成为揭示潜在问题与盲点的高效工具。尤其是那些“我不知道我不知道”的领域,外部顾…

使用LVGL驱动三色墨水屏,Arduino

一、基本情况 本文代码基于以下软件版本: Arduino2.X LVGL8.3.11 GXEPD1.6.2 epdpaint---微雪EPD驱动的一部分,你可以在微雪的官网下载到 硬件: MCU:ESP32-S3-N16R8 屏幕:GDEY042Z98黑白红三色墨水屏,某…

DeepSeek未来发展趋势:开创智能时代的新风口

DeepSeek未来发展趋势:开创智能时代的新风口 随着人工智能(AI)、深度学习(DL)和大数据的飞速发展,众多创新型技术已经逐渐走向成熟,而DeepSeek作为这一领域的新兴力量,正逐步吸引越…

Go红队开发—编解码工具

文章目录 开启一个项目编解码工具开发Dongle包Base64编解码摩斯密码URL加解密AES加解密 MD5碰撞工具开发 开启一个项目 这作为补充内容,可忽略直接看下面的编解码: 一开始用就按照下面的步骤即可 1.创建一个文件夹,你自己定义名字(建议只用…

算法·搜索

搜索问题 搜索问题本质也是暴力枚举,一般想到暴力也要想到利用回溯枚举。 排序和组合问题 回溯法 去重问题:定义全局变量visited还是局部变量visited实现去重? 回溯问题 图论中的搜索问题 与一般的搜索问题一致,只不过要多…

常见的限流算法有哪些?

好的,关于这个问题,我会从几个方面来回答。 首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。 常见的限流算法有 5 种。 1. (如图)计数器限流&a…

BetaFlight源码解读01

1.打开main.c init();run(); void systemInit(void) {int ret;clock_gettime(CLOCK_MONOTONIC, &start_time);printf("[system]Init...\n");SystemCoreClock 500 * 1e6; // virtual 500MHzif (pthread_mutex_init(&updateLock, NULL) ! 0) {printf("Cr…