暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pentaho(Kettle)数据集成工具

ZhiBlog 2023-04-10
3872

PDI(Kettle)介绍

     Kettle最早是一个开源的ETL工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来,Pentaho公司收购了Kettle项目,从此,Kettle成为企业级数据集成及商业智能套件Pentaho的主要组成部分,Kettle亦重命名为Pentaho Data Integration(简称PDI)。Pentaho公司后来又被日本的日立收购,成为Hitachi Vantara的一部分。

       PDI以Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。KDI分为商业版与开源版,一般人仍习惯把Pentaho Data Integration的开源版称为Kettle。


主要功能

      PDI作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleaning)、转换(Transformation)、混合(Blending),并支持多维联机分析处理(OLAP)和数据挖掘(Data mining)。部分特色功能包括:

1.无代码拖拽式构建数据管道

2.多种数据源支持

3.数据管道可视化

4.模板化开发数据管道

5.可视化计划任务

6.大数据处理



01 | 无代码拖拽式构建数据管道



     Pentaho采用拖拽组件、连线、配置的方式来构建数据管道,透过几百个不同的组件,用户可以在不编写一句代码就能轻松完成对数据源读取,对数据进行关联、过滤、格式转换、计算、统计、建模、挖掘、输出到不同的数据目标,极大程度地降低开发技术门槛和有效减低开发和维护成本。


02 | 多种数据源支持



     关系型数据库支持类型包括:DB2,Greenplum, Hive, MS SQL Server, MySQL, Oracle, PostgreSQL等。大数据源支持包括:Avro, Cassanddra, HBase, HDFS, MongoDB等。文件格式支持包括:CSV, TXT, JSON, Excel, XML等。流数据支持包括:AMQP, Kafka, MQTT, 其他数据源对接包括:S3, SAS, Salesforce, REST等。


03 | 数据管道可视化



    支持用户在数据管道任何一个步骤对当前数据进行查看(Examine),并可以在线以表格和图表(例如:柱状图、饼图等)输出步骤的数据,甚至可以支持不落地直接把任何一个步骤的数据以JDBC的方式提供给第三方应用访问。


04 | 模板化开发数据管道



     PDI提供了一个叫MDI的功能,MDI全称是Metadata Injection元数据注入,用户可以透过MDI把数据转换模板化,然后把像数据表名、文件路径、分隔符、字符集等等这些变量放在一个表或者文件里,然后利用MDI把这些变量注入数据转换模板,PDI即可自动生成所需要的数据转换。


05 | 可视化计划任务



     PDI提供可视化方式配置任务计划(Schedule),用户可透过Spoon或网页端的Pentaho User Console(商业版)来配置和维护任务具体的执行时间、间隔、所使用的参数值、以及具体运行的服务器节点。用户亦可以透过Spoon或Pentaho User Console(商业版)查看任务计划列表。当然,用户也可以透过Spoon或Pentaho User Console(商业版)对任务执行情况进行实时监控。


06 | 大数据处理



     使用转换步骤连接到各种大数据数据源,包括 Hadoop、NoSQL 和分析数据库(如 MongoDB)。



项目结构

1.assemblies:项目分发存档在此模块下生成

2.core:核心实现

3.dbdialog:数据库对话框

4.ui:用户界面

5.engine:PDI引擎

6.engine-ext: PDI引擎扩展插件

7.plugins:PDI core插件

8.integration:集成测试



PDI客户端

      PDI 客户端(也称为 Spoon)是一个桌面应用程序,可让您构建转换以及安排和运行作业。

PDI 客户端的常见用途包括:

1.不同数据库和应用程序之间的数据迁移

2.充分利用云、集群和大规模并行处理环境将庞大的数据集加载到数据库中

3.使用从非常简单到非常复杂的转换的步骤进行数据清理

数据集成,包括利用实时 ETL 作为 Pentaho Reporting 数据源的能力

4.内置支持缓慢变化维度和代理键创建的数据仓库填充



相关链接

PDI相关地址

01

源码地址:

https://github.com/pentaho/pentaho-kettle/

02

官方社区版下载地址: https://www.hitachivantara.com/en-us/products/dataops-software/data-integration-analytics/pentaho-community-edition.html

03

sourceforge下载地址:

https://sourceforge.net/projects/pentaho/files/

如果需要最新的PDI,可使用Maven(3+)构建。注意:最新的PDI已使用Java JDK 11。


安装PDI

01 | 前提



a.安装JDK 11

b.对于Linux/Uubuntu安装,还需要安装libwebkitgtk-1.0-0才能使PDI正常工作


02 | 下载Zip



从Hitachi Vantara Pentaho社区页面下载适用于您的操作系统的压缩包,版本和构建名为:pdi ce-<version>-<build>.zip。


03 | 解压Zip



将文件解压到指定目录


04 | 添加JDBC



在PDI安装目录的data-integration\lib下添加相应数据库的JDBC驱动



04 | 启动PDI




对于Windows,找到spoon.bat。双击此文件以启动PDI。对于Linux/Ubuntu,输入./spoon.sh命令启动PDI




spoon迁移表结构

新建一个作业或者转换



DB连接-新建数据库连接向导


选择数据库名称和类型


输入数据库地址、端口以及数据库名


数据库空间和索引表空间可不设置


设置数据库用户名和密码并测试连接


复制多表向导


选择源和目的数据库


选择要迁移的表


注意1:这里的表是按表创建时间排序的,无法按其他方式进行排序。特别是对于需要迁移的表以及表数据众多的时候,如果表转换出现问题,很难排查,建议批量转换。

注意2: Kettle最主要的作用在于数据的抽取和转换,函数、存储过程、视图以及索引、约束等无法通过Kettle进行迁移。

配置Job名以及Job存放目录


生成了一个作业


注意:如果需要迁移的数据很少,直接点击RUN箭头迁移即可。

Generate the SQL needed to run this job-生成SQL



查看并执行SQL


查看表结构迁移情况

    MariaDB [test]> show tables;
    Empty set (0.000 sec)


    MariaDB [test]> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | test1 |
    | test2 |
    | test_table1 |
    | test_table2 |
    +----------------+
    4 rows in set (0.000 sec)



    定时同步单表数据

    新建转换


    新建作业


    表输入组件


    排序合并组件


    数据同步组件


    表输出组件


    指定作业中转换文件的路径


    配置每30秒同步一次


    点击RUN执行作业


    查看执行结果


    源库insert

      INSERT INTO "TEST_TABLE1" ("id", "age") VALUES ('5', '21');
      INSERT INTO "TEST_TABLE1" ("id", "age") VALUES ('6', '21');
      INSERT INTO "TEST_TABLE1" ("id", "age") VALUES ('7', '22');
      INSERT INTO "TEST_TABLE1" ("id", "age") VALUES ('8', '22');

      目标库查看同步情况


      源库update

        UPDATE "TEST_TABLE1" SET "age" = '24' WHERE "id" = '1';
        UPDATE "TEST_TABLE1" SET "age" = '26' WHERE "id" = '2';

        目标库查看同步情况


        源库delete

          DELETE "TEST_TABLE1" WHERE "id" = '7';
          DELETE "TEST_TABLE1" WHERE "id" = '8';

          目标库查看同步情况



          定时多表数据同步


          多表同步任务-主作业



          获取变量-数据迁移-作业



          获取全量表名-转换任务



          设置变量-转换任务



          数据迁移同步-转换任务



          获取表名组件



          字段选择组件



          复制记录到结果组件



          从结果获取记录组件



          设置环境变量



          表输入组件



          表输出组件



          获取变量-数据迁移作业-start



          指定转换任务-获取变量-文件路径







          指定转换任务-数据迁移-文件路径


          数据迁移作业-主任务-配置定时任务



          主任务-配置获取全量表名任务路径



          主任务-配置获取变量与数据迁移作业并勾选执行每一个输入行



          点击主任务-RUN-执行作业



          查看执行结果






          文章转载自ZhiBlog,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论