学习笔记

  • 一、简介
    • 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的核心组件

  1. 勺子(Spoon):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。
  2. 煎锅(Pan):利用Pan可以用命令行的形式执行由Spoon编辑的转换和作业
  3. 厨房(Kitchen):利用Kitchen可以使用命令行调用由Spoon编辑好的Job
  4. 菜单(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)

步骤(控件)是转换里的基本的组成部分

一个步骤有如下几个关键特性:

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

3.3、跳(Hop)

跳就是步骤之间带箭头的连线,跳定义了步骤之间的数据通路。

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

3.4、元数据

每个步骤在输出数据行时都有对字段的描述,这种描述就是数据行的元数据。

通常包含下面一些信息:

  1. 名称:数据行里的字段名是唯一的。
  2. 数据类型:字段的数据类型。
  3. 格式:数据显示的方式,如 Integer 的#、0.00。

3.5、数据类型

数据以数据行的形式沿着步骤移动。一个数据行是零到多个字段的集合

字段包含下面几种数据类型:

  1. String:字符类型数据
  2. Number:双精度浮点数。
  3. Integer:带符号长整型(64位)。
  4. BigNumber:任意精度数据。
  5. Date:带毫秒精度的日期时间值。
  6. Boolean:取值为 true和 false的布尔值。
  7. 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】学习笔记相关推荐

  1. kettle学习笔记(三)——kettle资源库、运行方式与日志

    kettle学习笔记(三)--kettle资源库.运行方式与日志 一.kettle资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任 ...

  2. kettle学习笔记

    kettle的学习笔记 谨以此记录学习kettle的过程,文中将会记录所有我遇到过得问题,如果有能帮助你到的地方,那真是再好不过了. 附上kettle中文官网:http://www.kettle.ne ...

  3. 【Kettle学习笔记】从Hbase导入数据至Mysql

    1.连接Hadoop集群与MySQL 1-1 下载当前集群的Hbase配置文件 1-2 解压改配置文件至cdh510目录下 1-3 修改D:\kettle\data-integration\plugi ...

  4. kettle学习笔记(二)——kettle基本使用

    一.子程序功能和启动方式介绍 Spoon.bat: 图形界面方式启动作业和转换设计器. Pan.bat: 命令行方式执行转换. Kitchen.bat: 命令行方式执行作业. Carte.bat: 启 ...

  5. Kettle 学习笔记 — 资源库

    版权声明:本文为博主原创文章,于2021年4月17日首发于CSDN,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u011046671/article/deta ...

  6. 校园课程 ·学习笔记 ·导航目录

    文章目录 前言 目录 大二(下) <编码规范和测试方法--C/C++版> <SQL高级应用和数据仓库基础(MySQL版)> 大三(上) <计算机网络> <计算 ...

  7. 初级Java学习笔记总结

    java高并发解决方案:     1.页面静态:静态访问消耗的资源少             信息录入然后生成静态页面以供访问     2.数据库集群和库表散列             主-从数据库关 ...

  8. 算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记

    算法学习 (门徒计划)4-1 单调队列及经典问题及经典例题 学习笔记 前言 单调队列 场景举例(RMQ) 应用-维护区间最值的方式 数据结构-自行设计单调队列 代码实现(java) 例题分析(略) 总 ...

  9. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

最新文章

  1. 流程控制if、while、for
  2. Lotus的书买回来了
  3. 行意天下正文 Android Day02-Android中单元测试(junit测试)monkey测试
  4. svn 源码版本控制使用体会
  5. SpaceX「十一手」火箭创纪录,一天内两次升空,马斯克:飞100次才退役
  6. URAL 1022 Genealogical tree
  7. 复合索引字段的排序对搜素的影响
  8. 华为服务器上传文件后怎么通过链接查看,远程服务器文件上传后的操作
  9. 软件设计师18-系统开发和运行01
  10. 华为机试HJ23:删除字符串中出现次数最少的字符
  11. macos下如何配置ssh无密码登录
  12. mysql 怎么导入sql文件_如何在MySQL中使用命令行导入SQL文件?
  13. 移动应用程序和网页应用程序_设计网站和移动应用程序的空白状态页
  14. 矢志不渝为安全—清华同方举安全大旗正式杀入云计算市场
  15. 题解-CTS2019氪金手游
  16. 程序员忽悠女朋友玩gal
  17. C++的errorC2039
  18. 老男孩mysql高级专业dba实战课程_老男孩MySQL高级专业DBA实战课程/高级运维DBA课程/MySQL视频教程下载...
  19. python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...
  20. EL表达式的具体作用

热门文章

  1. Android-OpenCV修改图片中某一块的像素
  2. 这款实现 C++、Java、Python 代码互译的工具,很强!
  3. Junit之Test测试
  4. 数据流分析之活跃分析
  5. 最近连续三周活跃用户数
  6. Oracle取整函数
  7. H3C SecPath F100 系列
  8. solaris 10 java_Solaris 10安装jdk1.6及修改成默认JDK
  9. 查询IP地址的免费API
  10. 董事长、总裁、CEO的区别