今天给各位分享etl需要java的知识,其中也会对etl需要学多久进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、ETL工程师要学什么?
2、ETL工具有哪些?
3、五种主流ETL工具对比
4、ETL是什么,形象的介绍一下
5、大数据etl工具有哪些
ETL工程师要学什么?
技术方面:需要学习使用数据源、目标端工具的基本使用(如 oracle MySQL hive等);需要学习etl工具的安装配置常用错误解决(如 kettle DataStage infa sqoop datax等)
理论方面:懂得数仓分层架构,维度建模等。
从ETL的字面来看,它主要包含三大阶段,分别是数据抽取、数据转换、数据加载。
1.数据抽取
这个阶段的主要目标是汇总多种数据源,为下一步的转换做准备。
2.数据转换
这个阶段是ETL的核心环节,也是最复杂的环节。它的主要目标是将抽取到的各种数据,进行数据的清洗、格式的转换、缺失值填补、剔除重复等操作,最终得到一份格式统一、高度结构化、数据质量高、兼容性好的数据,为后续的分析决策提供可靠的数据支持。
3.数据加载
这个阶段的主要目标是把数据加载至目的地,比如数据仓库中。通常的做法是,将处理好的数据写成特定格式(如parquet、csv等)的文件,然后再把文件挂载到指定的表分区上。也有些表的数据量很小,不会采用分区表,而是直接生成最终的数据表。
了解了ETL这部分的工作主要做什么,接下来再来说作为ETL工程师需要具备哪些技能,这些也就是需要学习的重点——
1、精通SQL语言,具备存储过程开发能力,能熟练进行SQL查询优化;
2、熟悉Hive数据仓库设计,了解数据仓库模型及思想、维度建模思想,了解数据仓库;
3、熟悉Hadoop、Spark、Flink、Kafka等相关技术;
4、熟练Python、Java中至少一种语言;
5、熟悉Mysql、Nosql等常见数据库。
ETL工具有哪些?
几种 ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica等)
四种工具的比较主要从以下几方面进行比对:
1、成本:
软件成本包括多方面,主要包括软件产品, 售前培训, 售后咨询, 技术支持等。
开源产品本身是免费的,成本主要是培训和咨询,所以成本会一直维持在一个较低水平。
商业产品本身价格很高,但是一般会提供几次免费的咨询或支持,所以采用商用软件最初成本很高,但是逐渐下降。
手工编码最初成本不高,主要是人力成本,但后期维护的工作量会越来越大。
2、易用性:
DataPipeline: 有非常容易使用的 GUI,具有丰富的可视化监控;
Kettle: GUI+Coding;
Informatica: GUI+Coding,有GUI,但是要专门的训练;
Talend:GUI+Coding,有 GUI 图形界面但是以 Eclipse 的插件方式提供;
3、技能要求:
DataPipeline:操作简单,无技术要求;
Kettle: ETL设计, SQL, 数据建模 ;
Informatica: ETL设计, SQL, 数据建模;
Talend:需要写Java;
4、底层架构:
DataPipeline:分布式,可水平扩展;
Kettle:主从结构非高可用;
Informatica:分布式;
Talend:分布式;
5、数据实时性:
DataPipeline:支持异构数据源的实时同步,速度非常快;
Kettle:不支持实时数据同步;
Informatica:支持实时,效率较低;
Talend:支持实时处理,需要购买高级版本,价格贵;
6、技术支持:
DataPipeline:本地化原厂技术支持;
Kettle:无;
Informatica:主要在美国;
Talend:主要在美国;
7、自动断点续传:
DataPipeline:支持;
Kettle:不支持;
Informatica:不支持;
Talend:不支持;
五种主流ETL工具对比
1 、简介
DataPipeline :隶属于北京数见 科技 有限公司,是一家企业级批流一体数据融合服务商和解决方案提供商,国内实时数据管道技术的倡导者。
通过平台和技术为企业客户解决数据准备过程中的各种痛点,帮助客户更敏捷、更高效、更简单地实现复杂异构数据源到目的地的实时数据融合和数据管理等综合服务。
从而打破传统 ETL 给客户灵活数据应用带来的束缚,让数据准备过程不再成为数据消费的瓶颈。
Kettle:是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Informatica:是全球领先的数据管理软件提供商。
在如下Gartner魔力象限位于领导者地位:数据集成工具魔力象限、数据质量工具魔力象限、元数据管理解决方案魔力象限、主数据管理解决方案魔力象限、企业级集成平台即服务(EiPaaS)魔力象限。
Talend :是数据集成解决方案领域的领袖企业,为公共云和私有云以及本地环境提供一体化的数据集成平台。Talend的使命是致力于帮助客户优化数据,提高数据可靠性,把企业数据更快地转化为商业价值。
以此为使命,Talend的解决方案将数据从传统基础架构中解放出来,提高客户在业务中的洞察力,让客户更早实现业务价值。
DataX :是阿里巴巴集团内被广泛使用的离线数据同步工具 / 平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。开源地址:
2 、成本
软件成本包括多方面,主要包括软件产品, 售前培训, 售后咨询, 技术支持等。
开源产品本身是免费的,成本主要是培训和 咨询,所以成本会一直维持在一个较低水平。
商业产品本身价格很高,但是一般会提供几次免费的咨询或支持,所以采用商用软件最初成本很高,但是逐渐下降。
手工编码最初成本不高,主要是人力成本,但后期维护的工作量会越来越大。
3、适用场景
DataPipeline: 主要用于各类数据融合、数据交换场景,专为超大数据量、高度复杂的数据链路设计的灵活、可扩展的数据交换平台;
Kettle: 面向数据仓库建模传统ETL工具;
Informatica: 面向数据仓库建模传统ETL工具;
Talend:面向数据仓库建模传统ETL工具;
DataX :面向数据仓库建模传统ETL工具
4、使用方式
DataPipeline: 全流程图形化界面,应用端采用B/S架构,Cloud Native为云而生,所有操作在浏览器内就可以完成,不需要额外的开发和生产发布;
Kettle: C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境,线上生产环境没有界面,需要通过日志来调试、 debug,效率低,费时费力;
Informatica: C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境;学习成本较高,一般需要受过专业培训的工程师才能使用;
Talend:C/S客户端模式,开发和生产环境需要独立部署,任务的编写、调试、修改都在本地,需要发布到生产环境;
DataX :DataX是以脚本的方式执行任务的,需要完全吃透源码才可以调用,学习成本高,没有图形开发化界面和监控界面,运维成本相对高
5、底层架构
DataPipeline: 分布式集群高可用架构,可以水平扩展到多节点支持超大数据量,架构容错性高,可以自动调节任务在节点之间分配,适用于大数据场景;
Kettle:主从结构非高可用,扩展性差,架构容错性低,不适用大数据场景;
Informatica: schema mapping非自动;可复制性比较差;更新换代不是很强,支持分布式部署;
Talend:支持分布式部署;
DataX :支持单机部署和集群部署两种方式
6、CDC机制
DataPipeline: 基于日志、基于时间戳和自增序列等多种方式可选;
Kettle:基于时间戳、触发器等;
Informatica: 基于日志、基于时间戳和自增序列等多种方式可选;
Talend:基于触发器、基于时间戳和自增序列等多种方式可选;
DataX :离线批处理
7、对数据库的影响
DataPipeline: 基于日志的采集方式对数据库无侵入性;
Kettle:对数据库表结构有要求,存在一定侵入性;
Informatica: 基于日志的采集方式对数据库无侵入性;
Talend:有侵入性;
DataX :通过sql select 采集数据,对数据源没有侵入性
8、自动断点续传
DataPipeline:支持;
Kettle:不支持;
Informatica:不支持;
Talend:不支持;
DataX :不支持
9、监控预警
DataPipeline:可视化的过程监控,提供多样化的图表,辅助运维,故障问题可实时预警;
Kettle:依赖日志定位故障问题,往往只能是后处理的方式,缺少过程预警;
Informatica:monitor可以看到报错信息,信息相对笼统,定位问题仍需依赖分析日志;
Talend:有问题预警,定位问题仍需依赖日志;
DataX :依赖工具日志定位故障问题,没有图形化运维界面和预警机制,需要自定义开发
10、数据清洗
DataPipeline:围绕数据质量做轻量清洗;
Kettle:围绕数据仓库的数据需求进行建模计算,清洗功能相对复杂,需要手动编程;
Informatica:支持复杂逻辑的清洗和转化;
Talend:支持复杂逻辑的清洗和转化;
DataX :需要根据自身清晰规则编写清洗脚本,进行调用(DataX3.0 提供的功能)
11、数据转换
DataPipeline:自动化的schema mapping;
Kettle:手动配置schema mapping;
Informatica:手动配置schema mapping;
Talend:手动配置schema mapping;
DataX :通过编写json脚本进行schema mapping映射
12、易用性、应用难度、是否需要开发
DataPipeline: 有非常容易使用的 GUI,具有丰富的可视化监控,易用性低,难度低,不需要开发;
Kettle: GUI+Coding,易用性低,难度高,需要开发;
Informatica: GUI+Coding,有GUI,但是要专门的训练,易用性低,难度高,需要开发;
Talend:GUI+Coding,有 GUI 图形界面但是以 Eclipse 的插件方式提供,易用性低,难度中,需要开发;
DataX:需要完全吃透源码才可以调用,学习成本高,没有图形开发化界面和监控界面,易用性低,难度高,需要开发
13、技能要求
DataPipeline:操作简单,无技术要求;
Kettle: ETL设计, SQL, 数据建模 ;
Informatica: ETL设计, SQL, 数据建模;
Talend:需要写Java;
DataX:需要写json脚本
14、数据实时性
DataPipeline:支持异构数据源的实时同步,速度非常快;
Kettle:不支持实时数据同步;
Informatica:支持实时,效率较低;
Talend:支持实时处理,需要购买高级版本,价格贵;
DataX :支持实时
15、技术支持
DataPipeline:本地化原厂技术支持;
Kettle:开源软件,需客户自行实施、维护;
Informatica:在美国,主要为第三方的实施和售后服务;
Talend:在美国,分为开源版和企业版,企业版可提供相应服务;
DataX:阿里开源代码,需要客户自动实施、开发、维护
文章为自己学习整理后的成果,如有错误的地方,欢迎提出已作出及时修正。
ETL是什么,形象的介绍一下
对于做过 BI 开发的朋友,ETL 并不陌生,只要涉及到数据源的数据抽取、数据的计算和处理过程的开发,都是 ETL,ETL 就这三个阶段,Extraction 抽取,Transformation 转换,Loading 加载。
从不同数据源抽取数据 EXTRACTION ,按照一定的数据处理规则对数据进行加工和格式转换 TRASFORMATION,最后处理完成的输出到目标数据表中也有可能是文件等等,这个就是 LOADING。
再通俗一点讲,ETL 的过程就跟大家日常做菜一样,需要到菜市场的各个摊位买好菜,把菜买回来要摘一下,洗一洗,切一切最后下锅把菜炒好端到饭桌上。菜市场的各个摊位就是数据源,做好的菜就是最终的输出结果,中间的所有过程像摘菜、洗菜、切菜、做菜就是转换。
在开发的时候,大部分时候会通过 ETL 工具去实现,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微软 SQL SERVER 里面的 SSIS 等等,在结合基本的 SQL 来实现整个 ETL 过程。
也有的是自己通过程序开发,然后控制一些数据处理脚本跑批,基本上就是程序加 SQL 实现。
哪种方式更好,也是需要看使用场景和开发人员对那种方式使用的更加得心应手。我看大部分软件程序开发人员出身的,碰到数据类项目会比较喜欢用程序控制跑批,这是程序思维的自然延续。纯 BI 开发人员大部分自然就选择成熟的 ETL 工具来开发,当然也有一上来就写程序脚本的,这类 BI 开发人员的师傅基本上是程序人员转过来的。
用程序的好处就是适配性强,可扩展性强,可以集成或拆解到到任何的程序处理过程中,有的时候使用程序开发效率更高。难就难在对维护人员有一定的技术要求,经验转移和可复制性不够。
用 ETL 工具的好处,第一是整个 ETL 的开发过程可视化了,特别是在数据处理流程的分层设计中可以很清晰的管理。第二是链接到不同数据源的时候,各种数据源、数据库的链接协议已经内置了,直接配置就可以,不需要再去写程序去实现。第三是各种转换控件基本上拖拉拽就可以使用,起到简化的代替一部分 SQL 的开发,不需要写代码去实现。第四是可以非常灵活的设计各种 ETL 调度规则,高度配置化,这个也不需要写代码实现。
所以在大多数通用的项目中,在项目上使用 ETL 标准组件开发会比较多一些。
ETL 从逻辑上一般可以分为两层,控制流和数据流,这也是很多 ETL 工具设计的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一个数据流与数据流处理的先后流程,一个控制流可以包含多个数据流。比如在数据仓库开发过程中,第一层的处理是ODS层或者Staging 层的开发,第二层是 DIMENSION维度层的开发,后面几层就是DW 事实层、DM数据集市层的开发。通过ETL的调度管理就可以让这几层串联起来形成一个完整的数据处理流程。
数据流就是具体的从源数据到目标数据表的数据转换过程,所以也有 ETL 工具把数据流叫做转换。在数据流的开发设计过程中主要就是三个环节,目标数据表的链接,这两个直接通过 ETL 控件配置就可以了。中间转换的环节,这个时候就可能有很多的选择了,调 SQL 语句、存储过程,或者还是使用 ETL 控件来实现。
有的项目上习惯使用 ETL 控件来实现数据流中的转换,也有的项目要求不使用标准的转换组件使用存储过程来调用。也有的是因为数据仓库本身这个数据库不支持存储过程就只能通过标准的SQL来实现。
我们通常讲的BI数据架构师其实指的就是ETL的架构设计,这是整个BI项目中非常核心的一层技术实现,数据处理、数据清洗和建模都是在ETL中去实现。一个好的ETL架构设计可以同时支撑上百个包就是控制流,每一个控制流下可能又有上百个数据流的处理过程。之前写过一篇技术文章,大家可以搜索下关键字 BIWORK ETL 应该在网上还能找到到这篇文章。这种框架设计不仅仅是ETL框架架构上的设计,还有很深的ETL项目管理和规范性控制器思想,包括后期的运维,基于BI的BI分析,ETL的性能调优都会在这些框架中得到体现。因为大的BI项目可能同时需要几十人来开发ETL,框架的顶层设计就很重要。
大数据etl工具有哪些
ETL是数据仓库中的非常重要的一环,是承前启后的必要的一步。ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
下面给大家介绍一下什么是ETL以及ETL常用的三种工具——Datastage,Informatica,Kettle。
一、什么是ETL?
ETL,Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
数据仓库结构
通俗的说法就是从数据源抽取数据出来,进行清洗加工转换,然后加载到定义好的数据仓库模型中去。目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
ETL是BI项目重要的一个环节,其设计的好坏影响生成数据的质量,直接关系到BI项目的成败。
二、为什么要用ETL工具?
在数据处理的时候,我们有时会遇到这些问题:
▶ 当数据来自不同的物理主机,这时候如使用SQL语句去处理的话,就显得比较吃力且开销也更大。
▶ 数据来源可以是各种不同的数据库或者文件,这时候需要先把他们整理成统一的格式后才可以进行数据的处理,这一过程用代码实现显然有些麻烦。
▶ 在数据库中我们当然可以使用存储过程去处理数据,但是处理海量数据的时候存储过程显然比较吃力,而且会占用较多数据库的资源,这可能会导致数据资源不足,进而影响数据库的性能。
而上述遇到的问题,我们用ETL工具就可以解决。ETL工具具有以下几点优势:
1、支持多种异构数据源的连接。(部分)
2、图形化的界面操作十分方便。
3、处理海量数据速度快、流程更清晰等。
三、ETL工具介绍
1、Datastage
IBM公司的商业软件,最专业的ETL工具,但同时价格不菲,适合大规模的ETL应用。
使用难度:★★★★
2、Informatica
商业软件,相当专业的ETL工具。价格上比Datastage便宜一点,也适合大规模的ETL应用。
使用难度:★★
3、Kettle
免费,最著名的开源产品,是用纯java编写的ETL工具,只需要JVM环境即可部署,可跨平台,扩展性好。
使用难度:★★
四、三种ETL工具的对比
Datastage、Informatica、Kettle三个ETL工具的特点和差异介绍:
1、操作
这三种ETL工具都是属于比较简单易用的,主要看开发人员对于工具的熟练程度。
Informatica有四个开发管理组件,开发的时候我们需要打开其中三个进行开发,Informatica没有ctrl+z的功能,如果对job作了改变之后,想要撤销,返回到改变前是不可能的。相比Kettle跟Datastage在测试调试的时候不太方便。Datastage全部的操作在同一个界面中,不用切换界面,能够看到数据的来源,整个job的情况,在找bug的时候会比Informatica方便。
Kettle介于两者之间。
2、部署
Kettle只需要JVM环境,Informatica需要服务器和客户端安装,而Datastage的部署比较耗费时间,有一点难度。
3、数据处理的速度
大数据量下Informatica与Datastage的处理速度是比较快的,比较稳定。Kettle的处理速度相比之下稍慢。
4、服务
Informatica与Datastage有很好的商业化的技术支持,而Kettle则没有。商业软件的售后服务上会比免费的开源软件好很多。
5、风险
风险与成本成反比,也与技术能力成正比。
6、扩展
Kettle的扩展性无疑是最好,因为是开源代码,可以自己开发拓展它的功能,而Informatica和Datastage由于是商业软件,基本上没有。
7、Job的监控
三者都有监控和日志工具。
在数据的监控上,个人觉得Datastage的实时监控做的更加好,可以直观看到数据抽取的情况,运行到哪一个控件上。这对于调优来说,我们可以更快的定位到处理速度太慢的控件并进行处理,而informatica也有相应的功能,但是并不直观,需要通过两个界面的对比才可以定位到处理速度缓慢的控件。有时候还需要通过一些方法去查找。
8、网上的技术文档
Datastage Informatica kettle,相对来说,Datastage跟Informatica在遇到问题去网上找到解决方法的概率比较低,kettle则比较多。
五、项目经验分享
在项目中,很多时候我们都需要同步生产库的表到数据仓库中。一百多张表同步、重复的操作,对开发人员来说是细心和耐心的考验。在这种情况下,开发人员最喜欢的工具无疑是kettle,多个表的同步都可以用同一个程序运行,不必每一张表的同步都建一个程序,而informatica虽然有提供工具去批量设计,但还是需要生成多个程序进行一一配置,而datastage在这方面就显得比较笨拙。
在做增量表的时候,每次运行后都需要把将最新的一条数据操作时间存到数据库中,下次运行我们就取大于这个时间的数据。Kettle有控件可以直接读取数据库中的这个时间置为变量;对于没有类似功能控件的informatica,我们的做法是先读取的数据库中的这个时间存到文件,然后主程序运行的时候指定这个文件为参数文件,也可以得到同样的效果
etl需要java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于etl需要学多久、etl需要java的信息别忘了在本站进行查找喔。