【Kettle】学习笔记
学习笔记
- 一、简介
- 1.1、ETL简介
- 1.2、Kettle简介
- 1.2.1、Kettle
- 1.2.2、Kettle的两种设计
- 1.2.3、Kettle的核心组件
- 二、安装部署
- 三、Kettle核心概念
- 3.1、转换
- 3.2、步骤(Step)
- 3.3、跳(Hop)
- 3.4、元数据
- 3.5、数据类型
- 四、Kettle调优
一、简介
1.1、ETL简介
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
市面上常用的ETL工具有很多,比如 Sqoop,DataX,Kettle,Talend 等
1.2、Kettle简介
1.2.1、Kettle
Kettle是一款国外开源的ETL工具,纯java编写
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中文名称叫水壶,该项目把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle 中有两种脚本文件,transformation和 job,transformation完成针对数据的基础转换,job 则完成整个工作流的控制。
Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。
1.2.2、Kettle的两种设计
Transformation(转换):完成针对数据的基础转换。
Job(作业):完成整个工作流的控制。
区别:
(1)作业是步骤流,转换是数据流。这是作业和转换最大的区别。
(2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个控件对应启动一个线程),然后数据流会从第一个控件开始,一条记录、一条记录地流向最后的控件;
1.2.3、Kettle的核心组件
- 勺子(Spoon):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。
- 煎锅(Pan):利用Pan可以用命令行的形式执行由Spoon编辑的转换和作业
- 厨房(Kitchen):利用Kitchen可以使用命令行调用由Spoon编辑好的Job
- 菜单(Carte.bat/ Carte.sh): Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。
二、安装部署
官网地址
下载地址
环境: JDK1.8
双击 Spoon.bat,启动图形化界面工具 慢很正常
三、Kettle核心概念
3.1、转换
转换(transaformation)负责数据的输入、转换、校验和输出等工作。
Kettle 中使用转换完成数据ETL全部工作。
转换由多个步骤(Step)组成,如文本文件输入,过滤输出行,执行SQL脚本等。
各个步骤使用跳(Hop)来链接。跳定义了一个数据流通道,即数据由一个步骤流(跳)向下一个步骤。
在Kettle 中数据的最小单位是数据行(row),数据流中流动其实是缓存的行集(RowSet)。
3.2、步骤(Step)
步骤(控件)是转换里的基本的组成部分
一个步骤有如下几个关键特性:
- 步骤需要有一个名字,这个名字在同一个转换范围内唯一
- 每个步骤都会读、写数据行(唯一例外是“生成记录”步骤,该步骤只写数据)。
- 步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤。
- 大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发和复制,分发是目标步骤轮流接收记录,复制是所有的记录被同时发送到所有的目标步骤。
3.3、跳(Hop)
跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。
跳实际上是两个步骤之间的被称之为行集的数据行缓存,行集的大小可以在转换的设置里定义。当行集满了,向行集写数据的步骤将停止写入,直到行集里又有了空间。当行集空了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行。
3.4、元数据
每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。
通常包含下面一些信息:
- 名称:数据行里的字段名是唯一的。
- 数据类型:字段的数据类型。
- 格式:数据显示的方式,如 Integer 的#、0.00。
- …
3.5、数据类型
数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合
字段包含下面几种数据类型:
- String:字符类型数据
- Number:双精度浮点数。
- Integer:带符号长整型(64位)。
- BigNumber:任意精度数据。
- Date:带毫秒精度的日期时间值。
- Boolean:取值为 true和 false的布尔值。
- Binary:二进制字段可以包含图像、声音、视频及其他类型的二进制数据。
四、Kettle调优
1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。
2、调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize: 1000~50000
3、尽量使用数据库连接池;
4、尽量提高批处理的commit size;
5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;
7、可以使用sgl来做的一些操作尽量sql;
8、插入大量数据的时候尽量把索引删掉;
【Kettle】学习笔记相关推荐
- kettle学习笔记(三)——kettle资源库、运行方式与日志
kettle学习笔记(三)--kettle资源库.运行方式与日志 一.kettle资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任 ...
- kettle学习笔记
kettle的学习笔记 谨以此记录学习kettle的过程,文中将会记录所有我遇到过得问题,如果有能帮助你到的地方,那真是再好不过了. 附上kettle中文官网:http://www.kettle.ne ...
- 【Kettle学习笔记】从Hbase导入数据至Mysql
1.连接Hadoop集群与MySQL 1-1 下载当前集群的Hbase配置文件 1-2 解压改配置文件至cdh510目录下 1-3 修改D:\kettle\data-integration\plugi ...
- kettle学习笔记(二)——kettle基本使用
一.子程序功能和启动方式介绍 Spoon.bat: 图形界面方式启动作业和转换设计器. Pan.bat: 命令行方式执行转换. Kitchen.bat: 命令行方式执行作业. Carte.bat: 启 ...
- Kettle 学习笔记 — 资源库
版权声明:本文为博主原创文章,于2021年4月17日首发于CSDN,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u011046671/article/deta ...
- 校园课程 ·学习笔记 ·导航目录
文章目录 前言 目录 大二(下) <编码规范和测试方法--C/C++版> <SQL高级应用和数据仓库基础(MySQL版)> 大三(上) <计算机网络> <计算 ...
- 初级Java学习笔记总结
java高并发解决方案: 1.页面静态:静态访问消耗的资源少 信息录入然后生成静态页面以供访问 2.数据库集群和库表散列 主-从数据库关 ...
- 算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记
算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记 前言 单调队列 场景举例(RMQ) 应用-维护区间最值的方式 数据结构-自行设计单调队列 代码实现(java) 例题分析(略) 总 ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
最新文章
- 流程控制if、while、for
- Lotus的书买回来了
- 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
- svn 源码版本控制使用体会
- SpaceX「十一手」火箭创纪录,一天内两次升空,马斯克:飞100次才退役
- URAL 1022 Genealogical tree
- 复合索引字段的排序对搜素的影响
- 华为服务器上传文件后怎么通过链接查看,远程服务器文件上传后的操作
- 软件设计师18-系统开发和运行01
- 华为机试HJ23:删除字符串中出现次数最少的字符
- macos下如何配置ssh无密码登录
- mysql 怎么导入sql文件_如何在MySQL中使用命令行导入SQL文件?
- 移动应用程序和网页应用程序_设计网站和移动应用程序的空白状态页
- 矢志不渝为安全—清华同方举安全大旗正式杀入云计算市场
- 题解-CTS2019氪金手游
- 程序员忽悠女朋友玩gal
- C++的errorC2039
- 老男孩mysql高级专业dba实战课程_老男孩MySQL高级专业DBA实战课程/高级运维DBA课程/MySQL视频教程下载...
- python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...
- EL表达式的具体作用