ETL工具对比

ETL开发

ETL是英文Extract-Transform-Load的缩写,表示将数据从来源端,经过抽取,转换,加载到目标数据源的过程。

数据抽取

分为全量抽取和增量抽取,数据量达到百万级别建议用增量抽取,小于百万级别可用增量抽取。同时第一次抽取都采用全量抽取。抽取过程中,注意空值处理,字符匹配,以及空格处理,数据错位等等有可能影响最终数据准确性的问题。

数据抽取可以使用ETL工具完成,也可以使用Sqoop完成。目前公司所用的是开源ETL工具kettle,kettle在使用过程中会存在一些缺陷,比方说抽取过后的数据串行,大数据量时抽取速度比较慢。同时任务调度功能方面不支持关闭状态下的调度。

数据转换

数据转换的任务主要进行不一致的数据转换,数据粒度的转换,以及一些商务规则的运算

1)不一致的数据转换

这个过程是一个整合的过程,将不同业务系统的相同的数据类型的数据统一,比方说A系统,和B系统同一个字段,两种取值。这样在抽取过来要将数据统一。

2)数据粒度的转换

业务系统一般存放非常明细的数据,而数仓中的数据是用来分析的,最后的数据一般都是将业务过程的数据按照数仓的粒度进行汇总后的结果。

3)商务规则的计算

公司有很多不同的业务规则,不同的数据指标,这些指标不是简单的相加减就能完成,需要在数仓中将这些指标按照不同的计算公式进行计算。

数据加载

数据加载是ETL的最后一个环节,一般将数据加载到MySQL供BI展示平台使用。

数据采集目前采用的是开源ETL工具kettle,kettle可以采集结构化和非结构化数据,对于结构化数据采集,可选择的技术方案除了有各种ETL工具,还有专门的数据采集工具sqoop。对于日志数据,可以选择Flume进行采集。

如果是实时需求,数据是日志数据,用Flume收集,传入Kafka,如果是关系数据库中的数据,可以选择OGG,canal等技术手段。

目前公司使用的ETL工具是Kettle,且数据开发太过依赖kettle工具,虽然kettle工具对于数据清洗过滤转换等很方便,但是kettle工具的存在局限性

1、自身调度工具功能不足依赖window任务调度,windows任务调度,没有回刷调度功能,自身功能存在缺陷;

2、kettle执行任务不稳定,经常出现访问CDH平台权限受限的问题;

3、后期部署脚本变多,kettle负载会变得很大,不便于部署跟管理基于以上考虑,将脚本执行以及任务调度从kettle中分离,只保留kettle抽取同步数据的功能;

原因一是数据源有多个kettle方便管理数据连接来进行连接,

原因二是kettle方便对原始数据进行清洗过滤转换。

以下是各种主流ETL工具对比,具体选择哪种ETL工具还需考虑公司自身的需要,以及产品与公司、业务场景的契合度。

比较维度\产品DataPipeLinekettleinformaticatalenddataX
设计及架构适用场景主要用于各类数据融合、数据交换场景,专为超大数据量、高度复杂的数据链路设计的灵活、可扩展的数据交换平台面向数据仓库建模传统ETL工具面向数据仓库建模传统ETL工具面向数据仓库建模传统ETL工具面向数据仓库建模传统ETL工具
适用方式全流程图形化界面,应用端采用B/S架构,Cloud Native为云而生,所有操作在浏览器内就可以完成,不需要额外的开发和生产发布C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境,线上生产环境没有界面,需要通过日志来调试、debug,效率低,费时费力C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境;学习成本较高,一般需要受过专业培训的工程师才能使用;C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境;DataX是以脚本的方式执行任务的,需要完全吃透源码才可以调用,学习成本高,没有图形开发化界面和监控界面,运维成本相对高。
底层架构分布式集群高可用架构,可以水平扩展到多节点支持超大数据量,架构容错性高,可以自动调节任务在节点之间分配,适用于大数据场景主从结构非高可用,扩展性差,架构容错性低,不适用大数据场景chema mapping非自动;可复制性比较差;更新换代不是很强支持分布式部署支持单机部署和集群部署两种方式
功能CDC机制基于日志、基于时间戳和自增序列等多种方式可选基于时间戳、触发器等基于日志、基于时间戳和自增序列等多种方式可选基于触发器、基于时间戳和自增序列等多种方式可选离线批处理
对数据库的影响基于日志的采集方式对数据库无侵入性对数据库表结构有要求,存在一定侵入性基于日志的采集方式对数据库无侵入性有侵入性通过sql select 采集数据,对数据源没有侵入性
自动断点续传支持不支持不支持,依赖ETL设计的合理性(例如T-1),指定续读某个时间点的数据,非自动不支持,依赖ETL设计的合理性(例如T-1),指定续读某个时间点的数据,非自动不支持
监控预警可视化的过程监控,提供多样化的图表,辅助运维,故障问题可实时预警依赖日志定位故障问题,往往只能是后处理的方式,缺少过程预警monitor可以看到报错信息,信息相对笼统,定位问题仍需依赖分析日志有问题预警,定位问题仍需依赖日志依赖工具日志定位故障问题,没有图形化运维界面和预警机制,需要自定义开发。
数据清洗围绕数据质量做轻量清洗围绕数据仓库的数据需求进行建模计算,清洗功能相对复杂,需要手动编程支持复杂逻辑的清洗和转化支持复杂逻辑的清洗和转化需要根据自身清晰规则编写清洗脚本,进行调用(DataX3.0 提供的功能)
数据转换自动化的schema mapping手动配置schema mapping手动配置schema mapping手动配置schema mapping通过编写json脚本进行schema mapping映射
特性数据实时性实时非实时支持实时,但是主流应用都是基于时间戳等方式做批量处理,实时同步效率未知实时定时
应用难度
易用性
稳定性
其他实施及售后服务原产实施和售后服务开源软件,需自客户自行实施、维护主要为第三方的实施和售后服务分为开源版和企业版,企业版可提供相应服务阿里开源代码,需要客户自动实施、开发、维护

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

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

相关文章

matlab中绘制 维诺图(Voronoi Diagram)

1.专业术语(相关概念): 基点Site:具有一些几何意义的点 细胞Cell:这个Cell中的任何一个点到Cell中基点中的距离都是最近的,离其他Site比离内部Site的距离都要远。 Cell的划分:基点Site与其它的…

Java中的static关键字

一、static关键字的用途 在《Java编程思想》P86页有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是s…

frida中使用gson打印map对象

Java.openClassFile("/data/local/tmp/r0gson.dex").load();const gson Java.use(com.r0ysue.gson.Gson);var Gson Java.use(‘com.google.gson.Gson’).$new(); console.log("map -> " Gson.toJsonTree(map).getAsJsonObject());

JS小数运算出现00000多位小数怎么解决

JS小数运算出现00000多位小数怎么解决 给大家分享一个经典的前端面试题: 0.10.2 0.3 //false javascript中浮点数的计算是以2进制计算的,所以0.10.2变成:0.30000000000000004 解决方案一 首先最简单的是利用JavaScript 的toFixed(n) 方…

app分发的一些流程

应用分发的流程通常包括以下步骤: 开发应用程序:首先,您需要开发您的应用程序。这包括编写代码、设计用户界面、测试应用程序等等。确保您的应用程序符合各个应用商店的规范和要求,以确保顺利通过审核。 准备应用材料&#xff1a…

Element UI定义方法校验邮箱格式

1. .vue中定义了3个邮箱输入框&#xff0c;前面两个是输入多个邮件地址&#xff0c;最后一个是使用element自带的校验来校验单个邮件地址 <el-row><el-col :span"24"><el-form-item label"收件人" prop"to"><el-input v-mo…

Linux系统管理:虚拟机Kylin OS安装

目录 一、理论 1.Kylin OS 二、实验 1.虚拟机Kylin OS安装准备阶段 2.安装Kylin OS 3.进入系统 一、理论 1.Kylin OS &#xff08;1&#xff09;简介 麒麟操作系统&#xff08;Kylin OS&#xff09;亦称银河麒麟&#xff0c;是由中国国防科技大学、中软公司、联想公司…

oracle rac了解

Oracle RAC 是一种高可用性和高性能的数据库解决方案&#xff0c;它允许多台服务器共享同一个数据库。简而言之&#xff0c;Oracle RAC 允许你将多个计算节点连接到一个共享的数据库实例中&#xff0c;从而提供了以下优势&#xff1a; 高可用性&#xff1a;Oracle RAC 提供了故…

Leetcode 2911. Minimum Changes to Make K Semi-palindromes

Leetcode 2911. Minimum Changes to Make K Semi-palindromes 1. 解题思路2. 代码实现 题目链接&#xff1a;2911. Minimum Changes to Make K Semi-palindromes 1. 解题思路 这一题属实也是把我坑惨了…… 坦率地说&#xff0c;这道题本身并没有啥难度&#xff0c;但是坑爹…

【RS】遥感影像/图片64位、16位(64bit、16bit)的意义和区别

在数字图像处理中&#xff0c;我们常常会听到不同的位数术语&#xff0c;比如64位、16位和8位&#xff08;64bit、16bit、8bit&#xff09;。这些位数指的是图像的深度&#xff0c;也就是图像中每个像素可以显示的颜色数。位数越高&#xff0c;图像可以显示的颜色数就越多&…

【SA8295P 源码分析 (二)】109 - QNX 如何实现显示图片到 Screen 显示屏上

【SA8295P 源码分析】109 - QNX 如何实现显示图片到 Screen 显示屏上 一、Screen 介绍1. Screen Client 创建方法介绍1.1 创建 screen_ctx 上下文1.2 创建一个渲染目标 window 窗口1.3 设置渲染目标 window 窗口的属性1.4 创建渲染目标 window 窗口的Buffer1.5 处理图像,渲染窗…

vue3点击表格某个单元格文本就切换成输入框,其他单元格不变化

<el-table :data"data.tableData" height"60vh" border scrollbar-aways-on><el-table-column label"序号" type"index" width"80" fixed /><el-table-column label"操作" width"120" f…

【c++】简单了解运算符重载

引例 class Integer{ public:Integer(int num):_num(num){}int& getValue(){return _num;} private:int _num; };现在有两个Integer对象a,b。想让a和b相加得到的结果给对象c&#xff0c;现在可以肯定的是cab编译后肯定会报错 请注意这条信息no match for operator (oper…

利用TreeMap来达成离散化的目的

假如有一些奶牛&#xff0c;他们有种类的区别&#xff0c;我们设黑色奶牛的id为1000010000&#xff0c;白色为1&#xff0c;诸如此类以此类推还有红色等各种颜色&#xff0c;接下来给你一群奶牛的颜色id让你统计每种颜色的奶牛有几头。 如过我们使用数组显然1000010000会爆空间…

uniapp 打包小程序体积优化思路、优先排查优化项参考

uni_modules 也采用分包 虽然 uniapp 官方说了 uni_modules 会根据使用用到而决定是否要打包过滤&#xff0c;但分包前后还是有区别的&#xff0c;所以我估计此前是理解错了虽然会过滤没用到的&#xff0c;但用到了的也会打包到主包里去&#xff0c;就导致了主包偏大无法上传的…

【Spring Boot 源码学习】HttpEncodingAutoConfiguration 详解

Spring Boot 源码学习系列 HttpEncodingAutoConfiguration 详解 引言往期内容主要内容1. CharacterEncodingFilter2. HttpEncodingAutoConfiguration2.1 加载自动配置组件2.2 过滤自动配置组件2.2.1 涉及注解2.2.2 characterEncodingFilter 方法2.2.3 localeCharsetMappingsCus…

会声会影2024有哪些新功能?好不好用

比如会声会影视频编辑软件&#xff0c;既加入光影、动态特效的滤镜效果&#xff0c;也提供了与色彩调整相关的LUT配置文件滤镜&#xff0c;可选择性大&#xff0c;运用起来更显灵活。会声会影在用户的陪伴下走过20余载&#xff0c;经过上百个版本的优化迭代&#xff0c;已将操作…

html列表

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>列表名称</title> </head> <body> <!--有序列表--> <ol><li>java</li><li>python</li><li…

centos 7.9 源码安装htop

1.下载源码 wget http://sourceforge.net/projects/htop/files/latest/download 2.上传到tmp目录&#xff0c;并解压 tar xvzf htop-1.0.2.tar.gz mv htop-1.0.2 /opt/ 进入到 cd /opt/htop-1.0.2/ 3.编译并安装 ./configure && make && make install 4.…

Ubuntu docker安装mysql

本文介绍如何在docker中安装mysql&#xff0c;之前有尝试过先在docker中安装一个ubuntu到镜像&#xff0c;然后进去再去安装mysql相关的东西&#xff0c;发现不行&#xff0c;这边整理一下一个可行的方式。 在下载镜像的时候&#xff0c;直接下载mysql镜像。 1.搜索镜像 doc…