文档章节

Kettle基础使用

AmCoder
 AmCoder
发布于 2017/05/22 18:02
字数 2101
阅读 178
收藏 1

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

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

目录

  • Kettle组件类型基本说明tans/job
  • Kettle大数据组件的应用说明
  • 基于表对表的同步
  • 基于表到hdfs的同步
  • 基于文件到hdfs的同步
  • 基于表到hive的同步
  • 基于表到hbase的同步
  • 基于文件到hbase的同步
  • 基于表到phoenix的同步
  • Kettle中sqoop的调用
  • Kettle中JavaScript的基本应用
  • 作业调用作业及转换
  1. 如需运用大数据组件 需要将如下:
  • core-site.xml
  • hbase-site.xml
  • hdfs-site.xml
  • hive-site.xml
  • mapred-site.xml
  • yarn-site.xml

配置文件放入 $KETTLE_HOME/plugins/pentaho-big-data-plugin/hadoop configurations/hdp24

并在$KETTLE_HOME/plugins/pentaho-big-data-plugin/plugin.properties文件中添加 active.hadoop.configuration=hdp24

Kettle组件类型基本说明Trans

  • Kettle设计好后可产出两种脚本文件,transformation(转换,后缀为.ktr)和job(作业,后缀为.kjb),这两类脚本都是xml格式。
  • Transformation完成针对数据的基础转换,作用和地位类似于DataStage中的Job。
  • Job则完成整个工作流的控制,作用和地位类似DataStage中的Sequence。

注:一般程序使用job开发即可,但针对大数据相关程序可以使用Transformation开发,然后使用job去封装。

类别  环节名称 功能说明 
Input  文本文件输入  从本地文本文件输入数据 
  表输入  从数据库表中输入数据
  获取系统信息  读取系统信息输入数据 
Output 文本文件输出     将处理结果输出到文本文件 
  表输出  将处理结果输出到数据库表 
  插入/更新  根据处理结果对数据库表机型插入更新,如果数据库中不存在相关记录则插入,否则为更新。会根据查询条件中字段进行判断
  更新 根据处理结果对数据库进行更新,若需要更新的数据在数据库表中无记录,则会报错停止 
  删除  根据处理结果对数据库记录进行删除,若需要删除的数据在数据库表中无记录,则会报错停止
Lookup  数据库查询 根据设定的查询条件,对目标表进行查询,返回需要的结果字段
  流查询 将目标表读取到内存,通过查询条件对内存中数据集进行查询 
  调用DB存储过程  调用数据库存储过程 
Transform  字段选择 选择需要的字段,过滤掉不要的字段,也可做数据库字段对应
  过滤记录 根据条件对记录进行分类
  排序记录  将数据根据某以条件,进行排序
  空操作  无操作
  增加常量  增加需要的常量字段
Scripting  Modified Java Script Value 扩展功能,编写JavaScript脚本,对数据进行相应处理
Mapping  映射(子转换) 数据映射
Job  Sat Variables 设置环境变量
  Get Variables 获取环境变量

Kettle组件类型基本说明Job

类别 环节名称 功能说明
Job entries START 开始
  DUMMY 结束
  Transformation 引用Transformation流程
  Job 引用Job流程
  Shell 调用Shell脚本
  SQL 执行sql语句
  FTP 通过FTP下载
  Table exists 检查目标表是否存在,返回布尔值
  File exists 检查文件是否存在,返回布尔值
  Javascript 执行JavaScript脚本
  Create file 创建文件
  Delete file 删除文件
  Wait for file 等待文件,文件出现后继续下一个环节
  File Compare 文件比较,返回布尔值
  Wait for 等待时间,设定一段时间,kettle流程处于等待状态
  Zip file 压缩文件为ZIP包
     
     
     
     

作业,可串行执行或并行执行。 串行执行,一条线,按步先后执行;两条线,则先执行完其中一条线再执行另一条线 并行执行,两条线同时执行 执行结果,true(成功)或false(失败),根据执行结果可控制流程走向

转换,一开始,所有步骤同时运行,记录从最前端的步骤向后传递,传递到相应步骤则记录被该步骤做相应处理,处理完成再往后传递。(如果不做连接 优先执行SQL)

基于表对表的同步

表对表同步是最基本的同步方式之一 新建一个转换:File->New-> Transformation

所有数据库连接可以使用数据库连接参数。

其中:JDBC属于普通数据库,JNDI属于RAC数据库。配置RAC需要将下面参数放到$KETTLE_HOME/simple-jndi/jdbc.properties文件中

RAC1/type=javax.sql.DataSource

RAC1/driver=oracle.jdbc.driver.OracleDriver RAC1/url=jdbc:oracle:thin:@(RAC连接串)

RAC1/user=数据库用户名 RAC1/password=数据库密码

基于表到HDFS的同步

为了防止HDFS中文数据乱码,需要在数据库读取数据时自动转换成UTF8、GBK等

基于文件到HDFS的同步

基于表到hive的同步

  • 一种方式为直接向hive里同步数据
  • 另一种方式为hive创建分区表并指定分区路径,向HDFS的分区路径导入数据,并在kettle里做更新数据等sql操作

基于表到hbase的同步

基于文件到hbase的同步

文件形式无法使用sql添加唯一主键,采用kettle的JavaScript来添加唯一主键字段

基于表到phoenix的同步

  1. 从集群拷贝 phoenix-core-xxx.jar phoenix-xxx-client.jar这两个文件到如下路径$KETTLE_HOME/lib/
  2. 添加数据库连接方式
  3. 如果存在jar包冲突,删除guava-17.0.jar

Kettle中调用sqoop来进行数据传输

  • Sqoop import为DB-bigdata
  • Sqoop export为bigdata-DB
  • JOB里才可以调用sqoop组件

Kettle中JavaScript的基本应用

Kettle自带例子

菜单:文件->从URL打开文件->samples 也可直接到kettle工具下的samples目录打开

作业可调用作业,实现流程控制。

Kettle全局参数的使用

可以在$KETTLE_HOME/.KETTLE/kettle.properties中直接编辑、添加参数

也可以在kettle界面中添加

Kettle界面中所有带蓝色S标志的 均可以使用参数代替

可以将加密后的值写在参数中(密码等) 所有参数均可以用shell、java传入

Kettle输出日志说明

  • 日志输出是检查程序运行状态的重要手段,是运维不可少的环节。
  • Kettle在日志输出方面可以分级控制: 没有日志(Nothing)、错误日志(Error)、最小日志(Minimal)、基本日志(Basic)、详细日志(Detailed)、调试日志(Debug)、行级日志(Rowlevel)。默认为基本日志(Basic)

I:步骤生成记录数(表或文件读入)

O:步骤输出记录数(输出到表或文件)

R:从前一步骤读取的记录数

W:向后一步骤写入的记录数

U:步骤更新过的记录数

E:步骤处理出错的记录数

Kettle程序脚本

  • Kettle启动脚本也分作业和转换     
  • 作业启动脚本:Kitchen.sh(or .bat)   

$KETTLE_HOME/kitchen.sh (pan.sh) -rep:资源库名称 -user:资源库用户名 -pass:资源库密码 -dir: 资源库中的目录 -job(-trans):资源库中的作业名称 -param:传入的参数 -param: -level=设置日志的级别 -log=指定日志文件 -logfile=将日志文件写到哪

  • 转换启动脚本:pan.sh(or .bat)
  • 加密脚本encr.sh

encr.sh加密的值以后可以直接应用在kettle的参数变量里

  • 导入脚本import.sh

${KETTLE_HOME}/import.sh

-rep:资源库名称

-user:资源库用户名

-pass:资源库密码

-file:导入的资源库文件位置

-norules:Y

-dir:导入资源库哪个目录

-replace=true 是否替换相同名字的作业

 

© 著作权归作者所有

AmCoder

AmCoder

粉丝 18
博文 17
码字总数 29073
作品 1
杭州
程序员
私信 提问
开源 ETL 工具 - Kettle

Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定(数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转...

匿名
2009/09/10
245.3K
11
Kettle 8.1 RC 发布,开源 ETL 工具

Kettle 8.1 RC 发布了,下载地址: https://github.com/pentaho/pentaho-kettle/releases/tag/8.1.0.0-RC 改进记录请看: https://github.com/pentaho/pentaho-kettle/compare/8.1.0.0-RC........

红薯
2017/12/14
6.4K
8
Win7下Kettle-7.0安装部署

1、Kettle概念 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种...

zisheng_wang_data
2017/03/10
0
0
Kettle 与 Talend Open Studio 的 ETL 比较

Pentaho Data Integration (Kettle)是Pentaho生态系统中默认的ETL工具。通过非常直观的图形化编辑器(Spoon),您可以定义以XML格式储存的流程。在Kettle运行过程中,这些流程会以不同的方法...

ychenETL
2011/06/13
5.4K
0
Kettle发送邮箱并在正文中以表格形式展示内容[升级版]

在上一篇关于Kettle发送邮件并在正文中以表格形式展示内容的文章中,已经提到Kettle邮箱正文中支持HTML格式,要在邮箱正文中展示表格,那就行拼出HTML,然后扔到邮箱正文中. 方法就是这么简单直接...

夏一
01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
5
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
17
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部