我们知道ETL核心功能即是从数据源获取数据,经过清洗过滤、字段投影、分组聚合等各种运算然后汇聚到指定库表,然后提供给其他业务系统或者直接对接BI报表系统。常见的ETL工具有Kettle、Talend等。由于Kettle开源使得广泛应用在各类IT系统中,它能对接关系数据库、Excel、Csv等数据源,然后应用数据筛选过滤、增加字段、字段投影等组件功能写入目的地。

大数据广泛应用的今天,需要处理的数据呈现爆发式增长,单纯数据源就可能来自公司IT系统,来源各类交易数据,用户行为数据,或者是来源于物联网各类传感器数据。海量数据对ETL处理系统提出了更高的要求。传统ETL工具已经很难胜任海量数据处理,没法做到分布式并行处理。

传统ETL面临的难题:

  1. 以Kettle为例,数据接收、数据加工、数据写入都在同一进程内,虽然能够部署成集群模式,但同一个ETL作业它没法切分成小任务并行地运行在多个Kettle实例上。像Kafka这类天然需要并行消费的数据源,Kettle对其支持就显得不那么友好
  2. 传统ELT工具没有map-reduce支持,没有DAG优化,没办法支持海量数据的分布式计算任务。比如根据用户浏览行为统计热门商品,ETL工具需要根据商品Id把数据分配不同的计算节点,然后执行reduce汇聚得出结果。

大数据平台ETL工具

联想大数据平台LeapHD包括数据集成、离线计算、流式计算、即席查询、数据服务、数据治理等各类开发工具。ETL工具涵盖离线计算、数据集成和流式计算3个模块,其中离线计算基于Hive、Spark批处理引擎而开发的,数据集成和流式计算是构建在Flink之上的流式计算引擎而开发的。数据集成和流式计算共用底层公共逻辑。流式ETL工具支持从传统关系数据库同步数据到大数据平台,比如mysql、oracle、sqlserver、db2、postgre等,目的地支持hive、spark、hbase、hdfs、关系数据库等。同时也支持本机Excel、Csv文件同步,支持远程FTP/SFTP、AWS S3等系统同步数据到联想大数据平台LeapHD。流式计算引擎模块支持时间窗口、分组聚合、过滤清晰、字段投影、累积去重等各种丰富组件。

基于Flink的ETL工具开发实践

Hadoop普及加速了大数据应用落地,计算引擎由最初的map-reduce模型也逐渐过渡到以Spark、Flink为主的DAG内存式计算引擎。由于hadoop map-reduce只能应用的离线批计算,Spark Streaming微批处理模式不能在及时性和高性能做好调和,联想大数据平台LeapHD最终选择在Flink流式计算引擎上构建ETL

  1. 传统编码过程是根据业务需求逐行书写代码去实现它,最终以B/S、C/S模式交付给用户。完成编码后,我们把代码打包部署到Tomcat等应用服务器。应用服务器内运行的就是我们的ETL处理程序。但是Hadoop、Spark或者Flink他们都只能以JAR包的形式提交给它们运行,这个JAR包需要按照Hadoop、Spark、Flink API去编写数据源读取、数据加工处理、数据写入的代码,并且这个过程不能包含Web部分。意味我们需要把用户端的页面输入在应用服务器内接收并组成转换成flink-jar。当然不需要每次作业都生成flink-jar,而是一个flink-jar能处理所有的ETL作业流程,只是它们运行的参数不一样。

传统B/S架构和基于Flink架构的ETL对比图 

ETL和数据挖掘的区别 etl和数据开发_流式计算

  1. Flink采用Java编写,Java是强类型语言,所以Flink API都需要传递数据类型。在ETL工具对接数据源的时候,我们不能把数据类型硬编码到源码中,只能动态传递进去。Flink提供强大的类型推断功能以及在泛型擦除的时候也提供了方法重新动态注册数据类型。
  2. 我们知道不同的数据库有不同的数据类型。ETL从源端到目的端的导数过程中,我们很难准确判断用户期望的目标数据类型。比如在mysql中有的同学喜欢用字符'Y'、'N'来表示true、false,有的同学喜欢用1、0来表示true、false,有的同学喜欢bit来表示true、false,用户期望这类数据同步到hive都是布尔型。联想大数据LeapHD ETL在Web页面提供最佳的默认类型匹配,同时开放类型设置给用户选择,用户可以在任意步骤调整输入、输出数据类型。并且LeapHD ELT会一直记录数据源最原始的类型来解决数据源到Java类型,Java再转换到目的类型的信息缺失问题。比如用户把Mysql包括bit类型的字段数据迁移到另外一个mysql库。如果是新增表,它会自动识别需要创建bit类型字段,而非int、bool。 
  3. ETL和数据挖掘的区别 etl和数据开发_etl报表开发是什么意思_02

联想大数据平台LeapHD ELT工具支持任意数据源、目的地和转换组件,增加一个源意味着您可以对接已有的数据处理组件、调用目的地组件。可以灵活可配置的类型转换,自动推荐最佳匹配类型。甚至您可以整库迁移数据到联想大数据或者其他第三方系统。使用联想流式ETL,可以把你大部分离线计算任务直接在迁移过程中完成计算,把以前T+1的计算变成近实时计算,用效率赢得机会,用数据驱动业务决策。