首页 > 其他分享 >ETL工具之Kettle使用方法

ETL工具之Kettle使用方法

时间:2024-04-23 15:56:33浏览次数:25  
标签:单击 步骤 数据库 Kettle 工具 数据 连接 ETL

一、Kettle 简介


1.1、Kettle是什么

Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,TransformationJob,transformation完成针对数据的基础转换,Job则完成整个工作流的控制。

Kettle,现在已经更名为PDI(Pentaho Data Integration-Pentaho,即数据集成)。

1.2、Kettle的特点

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

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

  1. 多数据源对接
  • 关系型数据库支持类型包括:AS/400,DB2,Google BigQuery,Greenplum,Hive,Impala,MS SQL Server,MySQL,Oracle,PostgreSQL,SAP,Snowflake,SparkSQL,Sybase,Teradata, Vertica等。
  • 大数据源支持包括:Avro,Cassanddra,HBase,HDFS,MongoDB,ORC, Parquet, Splunk等。
  • 文件格式支持包括:CSV, TXT, JSON, Excel, XML等。
  • 流数据支持包括:AMPQ,JMS,Kafka,Kinesis,MQTT。
  • 其他数据源对接包括:HL7,S3,SAS,Salesforce,HCP,REST等。
  1. 数据管道可视化

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

  1. 模板化开发数据管道

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

  1. 可视化计划任务
  • Kettle提供可视化方式配置任务计划(Schedule),用户可透过Spoon或网页端的Pentaho User Console来配置和维护任务具体的执行时间、间隔、所使用的参数值、以及具体运行的服务器节点。
  • 用户亦可以透过Spoon或Pentaho User Console查看任务计划列表;当然,用户也可以透过Spoon或Pentaho User Console对任务执行情况进行实时监控。
  1. 深度Hadoop支持
  • Kettle针对Hadoop主流厂家预置专用的对接插件,支持的Hadoop版本包括Cloudera,Hortonworks,AWS EMR,Google Dataproc等,用户除了可以透过插件轻松对接Hadoop集群的数据源(HDFS,Hive,HBase,Impala等)以外,Pentaho还提供与Kerberos、Sentry和Ranger等Hadoop企业级安全机制对接,以满足企业安全要求。
  • 另外,Pentaho Data Integration的Pentaho MapReduce提供用户以无编码方式定义MapReduce任务;同时,用户亦可以在作业中执行Sqoop、Pig、MapReduce、Oozie和Spark任务。
  1. 数据任务下压Spark集群

Kettle提供了把数据转换任务下压到Spark来执行的AEL(Adaptive Execution Layer)功能,搭建好的数据管道会被AEL转成Spark任务来执行,这样数据就不需要离开集群,而是在集群里透过Spark强大的分布式处理能力来进行处理。

  1. 数据挖掘与机器学习支持
  • 最新版的Pentaho9.1预置了超过20种数据挖掘算法类的转换步骤,用户可以轻松把把机器学习集成到数据管道里,用来做数据模型训练和进行预测分析。
  • 预置算法包括:决策树、深度学习、线性回归、逻辑回归、Naive贝尔斯、随机森林等等,用户也可以利用Pentaho Data Integration作数据预备,然后把数据以dataframe的方式输入到Python或R中进行模型训练或预测。

1.3、Kettle核心组件

  • Spoon

 Spoon是构建ETL Jobs和Transformations的工具。Spoon以拖拽的方式图形化设计,能够通过spoon调用专用的数据集成引擎或者集群。

  • Pan

Pan是一个后台执行的程序,没有图形界面,类似于时间调度器。

  • chef

任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。

  • Kitchen

批量使用由Chef设计的任务。

二、Kettle 安装与部署


2.1、下载

Kettle官方网址:Home - Hitachi Vantara,目前最新是9.2版本的。

进入官网后选择 –>Data Integration,找到Downloads,看到稳定版本为Data Integration 8.2,选择进行下载即可。

2.2、安装

  • 下载好的压缩包进行解压

 

 

  • 打开解压之后的data-integration文件夹

 

  • Windows系统,点击Spoon.bat运行;Linux系统点击Spoon.sh运行

 

2.3、环境变量配置

因为Kettle是纯Java开发的,因此下载以后需要配置一下环境变量。需要先安装JDK,准备好Java软件的运行环境,安装jdk1.8版本即可,具体操作可参考百度。

2.4、常见问题

  1. 启动Kettle后,页面右上角不出现Connect。

 

 解决方法:打开系统盘用户目录下的repositories.xml配置文件,将乱码内容删除,并删除.spoonrc文件,重启Kettle。

 

2、可视化界面spoon.bat打不开,JVM提示不能正常启动

解决方法:

  • 检查环境变量的配置
  • 检查JDK版本,新版本最好用1.6以上
  • 新安装了高版本jdk,环境变量也没问题,但是java -version 版本还是老的,那就检查一下原版本的的快捷方式java.exe还在不在,在的话就删掉。
  • 以文本方式打开spoon.bat ,修改内存配置

3、连接数据库找不到驱动问题(以MySQL为例)

提示错误:

[mysql] : org.pentaho.di.core.exception.KettleDatabaseException: 

Error occured while trying to connect to the database

Driver class ‘org.gjt.mm.mysql.Driver’ could not be found, make sure the ‘MySQL’ driver (jar file) is installed.

org.gjt.mm.mysql.Driver

解决办法:把mysql-connector-java-5.1.37-bin.jar拷贝到 \\pdi-ce-6.0.1.0-386\data-integration\lib下面,然后重新启动spoon即可。

三、Kettle 运行界面与基本概念


3.1、运行界面

 

 3.2、基本概念

1)可视化编程

Kettle可以被归类为可视化编程语言(Visual Programming Languages,VPL),因为Kettle可以使用图形化的方式定义复杂的ETL程序和工作流

Kettle里的图就是转换作业

可视化编程一直是Kettle里的核心概念,它可以让你快速构建复杂的ETL作业减低维护工作量,它通过隐藏很多技术细节,使IT领域更贴近与商务领域。

2)转换(Transformation)

  • 转换是ETL解决方案中最主要的部分,它处理抽取、转换、加载各种对数据行的操作。
  • 转换包含一个或多个步骤(step),如读取文件、过滤数据行、数据清洗或将数据加载到数据库。
  • 转换里的步骤通过跳(hop)来连接,跳定义一个单向通道,允许数据从一个步骤向另一个步骤流动。
  • 在Kettle里,数据的单位是,数据流就是数据行从一个步骤到另一个步骤的移动。
  • 数据流有的时候也被称之为记录流

 

3)步骤(Step)

Kettle里面的,Step步骤(控件)是转换里的基本的组成部分。一个步骤有如下几个关键特性:

  • 步骤需要有一个名字,这个名字在转换范围唯一
  • 每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据)。
  • 步骤将数据写到与之相连的一个或多个输出,再传送到跳的另一端的步骤
  • 大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被被设置为分发复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。

4)跳(Hop)

Kettle里面的跳即步骤之间带箭头的连线,跳定义了步骤之间的数据通路

 

  • 跳实际上是两个步骤之间的被称之为行集的数据行缓存(行集的大小可以在转换的设置里定义)。
  • 当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。
  • 当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。

5)数据行——数据类型

数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合,字段包含下面几种数据类型。

  • String:字符类型数据
  • Number:双精度浮点数。
  • Integer:带符号长整型(64位)。
  • BigNumber:任意精度数据。
  • Date:带毫秒精度的日期时间值。
  • Boolean:取值为true和false的布尔值。
  • Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。

6)数据行——元数据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。通常包含下面一些信息。

  • 名称:行里的字段名应用是唯一的。
  • 数据类型:字段的数据类型。
  • 格式:数据显示的方式,如Integer的#、0.00。
  • 长度:字符串的长度或者BigNumber类型的长度。
  • 精度:BigNumber数据类型的十进制精度。
  • 货币符号:¥。
  • 小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点(.)或逗号(,)。
  • 分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点(.)或逗号(,)或单引号(’)。

7)日志——I O R W U E

 

(I=669, O=0, R=0, W=668, U=0, E=0)

 I   是指当前 (步骤) 生成的记录(从表输入、文件读入)
O  是指当前 (步骤) 输出的记录数(输出到文件、表)
R  是指当前 (步骤) 从前一步骤读取的记录数
W 是指当前 (步骤) 向后面步骤抛出的记录数
U  是指当前 (步骤) 更新过的记录数
E  是指当前 (步骤) 处理的记录数

四、Kettle 读取CSV文件


4.1、输入

就是用来抽取数据生成数据的操作。是ETL操作的E(Extraction)。

4.2、CVS文件

是一种带有固定格式文本文件

假设我们的目的是读取 CSV 文件,在 Excel 中输出。当然,这种简单操作完全不需要 Kettle,Excel 直接就可以打开并转换。练习的目的是从易到难,逐步掌握 Kettle 的用法。

CSV 文件是一种常见的文本文件,一般含有表头和行项目。大多数数据处理型软件都含有对 CSV 格式的支持。进入 Spoon 的主界面,通过菜单 [文件] –> [新建] –> [转换] 新建一个转换。

 在左边的核心对象中,找到输入文件夹下面的CSV文件输入,将其拖到右边的工作区。双击CSV文件输入图标,通过浏览按钮找到 想要读取的 CSV 文件:

 

点击对话框中的 “获取字段” 按钮,自动获得 CSV 文件各列的表头。之所以可以这样,是因为 “包含列头行” 默认选中。点击 “预览” 按钮可以预览数据。如果是中文,注意文件的编码。

 

 在左边导航区的 “输出” 文件夹下,将 “Excel输出” 步骤拖放到右边的工作区。选中步骤 “CSV文件输入”,通过 shift+鼠标拖动,连接两个步骤,此时界面如下:

 双击 “Excel输出”,设置文件名和扩展名:

 切换到 “字段” 页签,点击 “获取字段” 按钮,获取需要输出的字段,可以删除不想要的字段,然后点击 “确定” 按钮:

 运行之前保存,转换被保存为扩展名为 ktr 的文件,这个文件是 xml 格式的文本文件,可以用 spoon 打开。然后点击 “运行”,即可以将 CSV 文件转换成 Excel 文件。

4.3、多个文件输入

在导航区 “核心对象” 中,找到 “输入” 文件夹下 “获取文件名”,拖到工作区。设置如下:

 点击 “预览记录” 按钮,查看包含的文件,两个文件都被读取到。filename 是在下一步要使用的文件路径,属于输出的变量。

 将 “获取文件名” 步骤连接至 “CSV文件输入” 步骤。此时,“CSV文件输入” 步骤的界面中,文件名字段为数据来源于前一步骤,选择 filename。其他相同。

 运行,可以把两个 CSV 文件中的数据加载并输出到 Excel 文件中。输入的文件格式,比如文本文件、Excel 文件大体类似。

五、Kettle 导入文件夹下的多个文件

5.1、任务描述

在一个文件夹下有几百个文本文件,每个文件内容的格式相同,都是有固定分隔符的两列,每个文件有几千行记录。

Kettle的转换处理数据流,其中有一个“文本文件输入”的输入对象,可以使用它在导入文件数据时添加上文件名字段,而且支持正则表达式同时获取多个文件名,正好适用此场景。

5.2、操作过程

1. 新建一个转换

包含“获取文件名”、“拆分字段2”、“拆分字段”、“表输出”四个步骤,如下图所示。

 

2. “文本文件输入”

如下图所示。 正则表达式.*test.*   意思是查找以test开头的文件。

 

3.拆分字段

按照分隔符“|”将字段field_1拆成field_000和field_111

 

5.表输出

 

 

6.启动运行

六、Kettle 创建数据库连接


6.1、任务描述书

抽取数据库数据,第一步是创建数据库连接,为数据操作提供桥梁。

为了方便抽取MySQL的“demodb”数据库中的数据表,需要创建一个数据库连接,访问“demodb”数据库。

6.2、实现思路

  • 建立数据库连接
  • 设置数据库连接参数
  • 测试和预览数据库连接
  • 建立共享/停止共享数据库连接

6.3、操作过程

1)建立数据库连接

数据库连接必须在转换工程或任务工程中才能创建,使用Ctrl+N快捷键,首先创建【demodb数据库连接】转换工程。

在【demodb数据库连接】转换工程中,单击【主对象树】选项卡,展开【转换】对象数(按钮表示收起状态,按钮表示展开状态),右键单击【demodb数据库连接】下的【DB连接】对象,弹出快捷菜单。如图所示:

 

6.4、设置参数

  • 单击【新建】选项,弹出创建【数据库连接】对话框。
  • 数据库连接参数包含【一般】【高级】【选项】【连接池】和【集群】5类参数。
  • 其中,【一般】参数是必填项,多数情况只需进行【一般】参数设置,即可完成创建数据库连接,其他四项是可选项。
  • 由于【高级】【选项】【连接池】绝大多数情况下采用默认值,一般不需要再设置其参数,本篇教程主要介绍【一般】参数和【集群】参数的设置。

1)【一般】参数

【一般】参数分为【连接名称】【连接类型】【连接方式】【设置】四部分参数设置。因为【连接类型】参数设置不同,【连接方式】【设置】参数设置也会有所不同,所以必须按照【连接类型】【连接方式】【设置】的顺序进行参数设置。

2)【集群】参数

指单个数据库连接能够连接抽取多个数据库的数据,单击【集群】参数项,进行【集群】参数设置。如图所示:

 

在【集群】参数设置中,勾选【使用集群】选项后,才能在【命名参数】表中设置集群参数。【分区ID】参数是指用不同的ID名称标识各个数据库,可以是英文字母、数字、中文等字符或组合。

参数设置完之后,单击【测试】按钮,弹出数据库连接测试是否成功的对话框。若正确,则显示正确连接到数据库信息;若错误,则显示错误连接到数据库的信息,需要重新设置正确的参数。

七、Kettle 建立共享/停止共享数据库连接


为了避免反复创建相同的数据库连接,在多个不同的转换工程或作业任务中共用相同的数据库,可以考虑建立共享的数据库连接。

7.1、建立共享

在建立好的数据库连接装换工程中,单击【主对象树】选项卡,展开【转换】对象树,单击>按钮,展开【DB连接】对象,右键单击数据库连接的名称。

单击【共享】选项,数据库连接共享成功,其他转换工程或任务工程即可共享使用。需要注意的是,共享后的数据库连接名称为粗体字体显示。

7.2、停止共享

数据库连接既可以共享,也可以停止共享。

与共享操作类似,单击【主对象树】选项卡,在【转换】对象树中,单击>按钮展开【DB连接】对象,右键单击显示为粗体字体的数据库连接名称,在弹出快捷菜单中单击【停止共享】选项,即可停止共享该数据库连接。

八、Kettle 表输入

8.1、任务描述

数据表是指具有统一名称,并且类型、长度、格式等元素相同的数据集合,在数据库中,数据是以数据表的形式存储的。

表输入的作用是抽取数据库中的数据表,并获取表中的数据。

为方便查看和统计学生的数学考试分数,需要通过表输入抽取某年级某次考试的数据成绩。

8.2、实现思路

  • 建立【表输入】转换工程
  • 设置【表输入】组件参数
  • 预览数据

8.3、操作过程

1)建立表输入转换工程

在demodb数据库中的“数学成绩”表,字段说明如表所示。

 

使用Ctrl+N快捷键,创建【表输入】转换工程,对所使用到的表进行数据库连接创建操作,并测试结果为成功。

在【表输入】转换工程中,单击【核心对象】选项卡,展开【输入】对象,选中【表输入】组件,并拖拽到右边工作区中。

双击【表输入】组件,弹出【表输入】对话框,如图所示。

 

2)设置参数

在【表输入】对话框中,设置有关参数,获取MySQL的demodb数据库中的“数学成绩”表,步骤如下:

1)设置组件名称。设置【步骤名称】为默认值“表输入”。

2)设置数据库连接。单击【数据库连接】下拉框,选择所创建的链接。

浏览数据表。单击【获得SQL查询语句…】按钮,弹出【数据库浏览器】对话框,单击按钮展开数据库,再单击俺就展开【表】数据表,显示所需要浏览的表(本教程以demodbConn数据库中的数学成绩表为例)。选择【数学成绩】表。

 

查看选中的数据表信息。单击【动作】按钮,弹出快捷菜单选项,可以分别预览数据库表的数据、记录数、表结构、生成SQL语句、裁剪表和查看表的有关信息等,如图所示。

 

 确认获取数据表的SQL查询语句。单击【确定】按钮,弹出【问题?】对话框,显示【你想在SQL里面包含字段名吗?】提示信息,如图所示。

 单击【否】按钮,在【SQL】表达式参数中获取的是简单的SQL查询语句,如图所示,其他参数采用默认值,此时完成【表输入】组件参数的设置。

 

标签:单击,步骤,数据库,Kettle,工具,数据,连接,ETL
From: https://www.cnblogs.com/wq-99/p/18153016

相关文章

  • docker compose 部署MetaBase,非常好用的BI工具
    docker-compose部署MetabaseMetabase官网:MetaBase部署步骤docker-compose文件准备docker-compose.ymlversion:'3.9'services:metabase:image:metabase/metabase:latestcontainer_name:metabasehostname:metabasevolumes:-/dev/ur......
  • 基于 ESPHome 的 3D 打印机舱内控制系统(1): 荆棘满途之 FireBeetle 2 ESP32-C6 初始
    前言开一个新坑,谋划了很久,最初是为了测试Moonraker的Sensor组件,逐步扩展到设计一个完整的控制系统。硬件选择ESP系列芯片,功能足够,还支持WiFi/BT。软件看了一圈选择ESPHome,轻代码,功能强大配置简单易上手。本文涉及的硬件:DFRoborFireBeetle2ESP32-C6迷你开发板本文......
  • 推荐一款好用的文档工具:docsify
    docsify是什么docsify可以快速帮你生成文档网站。不同于GitBook、Hexo的地方是它不会生成静态的.html文件,所有转换工作都是在运行时。如果你想要开始使用它,只需要创建一个index.html就可以开始编写文档并直接部署在GitHubPages。编写一些团队内部研发规范、api接口文档......
  • Advanced .Net Debugging 1:你必须知道的调试工具
    Advanced.NetDebugging1:你必须知道的调试工具合集-Net高级调试(基于原著)(7) 1.Advanced.NetDebugging1:你必须知道的调试工具01-242.Advanced.NetDebugging2:CLR基础02-273.Advanced.NetDebugging3:基本调试任务(调试目标、符号、控制调试目标执行和设置断点)03-04......
  • 收藏5个实用的在线工具,个个都能让你大开眼界
    1.zz-planzz-planhttps://zz-plan.com/是一个在线的甘特图项目管理工具,你可以轻松的制作一个漂亮的甘特图,有了zz-plan什么进度跟踪、工作汇报轻轻松松。并且支持多人协作、私有化部署。 2.i18nsi18ns是一个https://i18ns.com/国际化翻译搜索工具。当您在翻译文案时,是......
  • 抓包工具wireshark
    一、wireshark是什么?wireshark是非常流行的网络封包分析软件,简称小鲨鱼,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。wireshark是开源软件,可以放心使用。可以运行在Windows和MacOS上。二、Wireshark常用应用场景1.网络管理员会使用wireshark来检查网络问题2......
  • ESXI 7.0 DELL 安装RAID管理工具perccli64
    Dell服务器需要下载官网PERCCLI_MRXX5_7.1910.0_A12_VMware.tar.gz工具测试使用博通的storcli无法检测到阵列卡 BCM-vmware-storcli2_008.0008.0000.0010-01_23124082-package[root@ESXI:/opt/lsi/storcli2]./storcli2showallCLIVersion=008.0008.0000.0010Jan08,20......
  • 交互式转化批处理工具 expect
    交互式转化批处理工具expectexpect中相关命令spawn启动新的进程expect从进程接收字符串send用于向进程发送字符串interact允许用户交互exp_continue匹配多个字符串在执行动作后加此命令例一#!/usr/bin/expectspawnscp/tmp/[email protected]:/tmpe......
  • 这个网站真的太香了!居然可以免费使用AI聊天工具和“智能AI聊天助手”项目源码!
    宝子们,在这个AI爆火的时代,你是否还在因为无法使用ChatGpt而头疼?是否还在寻觅一款国内的好用AI工具呢?好消息!小编花费三个月终于找到了一个可以免费使用AI聊天工具的网站,由于这个网站之前一直在内测阶段,所以就没有给大家分享。刚好,近期这个网站正式上线了。小编今天就来好好跟大......
  • 性能测试——压测工具locust——脚本初步编写
         UserClass一个用户类代表一个用户(如果你愿意,也可以是一群蝗虫)。Locust将为正在模拟的每个用户生成一个User类的实例。用户类可以定义一些通用属性。      on_start和on_stop方法User和TaskSets可以声明一个on_start和on_stop方法,User:在该......