快速上手kettle(二)小试牛刀

news2024/12/25 9:24:45

快速上手kettle二 小试牛刀

      • 一 、前言
      • 二 、两个小目标
      • 三、 kettle核心概念介绍
        • 3.1 转换
          • 3.1.1 步骤(Step)
          • 3.1.2 跳(Hop)
          • 3.1.3 元素据
          • 3.1.4 数据类型
          • 3.1.5 并发执行
        • 3.2 作业
      • 四、实践操作
        • 4.1 案例1 将csv文件转换成excel文件
          • 4.1.1 在kettle中新建一个转换
          • 4.1.2选择输入控件并设置
          • 4.1.3 选择输出控件并设置
          • 4.1.4 按住**shift** 通过**跳**将输入输出两步骤连接起来
          • 4.1.5 点击启动按钮执行转换
          • 4.1.6查看日志,并检查是否成功
        • 4.2 案列2 将excel文件导入MySQL数据库
          • 4.2.1和上面步骤一样我们需要新建一个转换
          • 4.2.2 新建数据库连接
          • 4.2.3 拖入Excel输入控件并设置
          • 4.2.4 拖入表输出控件并设置
          • 4.2.5 点击启动按钮进行转换
          • 4.2.6 查看日志并检查MySQL数据表中是否有数据

一 、前言

上一期中大概介绍了下kettle,并已经把kettle下载安装完了。

这一期我们就来简单体验下kettle怎么进行数据转换的。

二 、两个小目标

我们这里呢就以两个小案例来体验下kettle

  • 将csv文件通过kettle转换成excel文件
  • 将excel文件通过kettle写入到数据库表中

三、 kettle核心概念介绍

kettle 被称为可视化编程语言,可以完成复杂的etl工作流。kettle里的代码就是转换和作业。

所以呢,我们首先就来说说转换和作业。

3.1 转换

从下面截图中,我们看到转换包含了很多核心对象,说明其包含了很多功能。后面有得我们学的了(开个玩笑)

–转换包含元素–转换核心对象
转换核心元素转换核心对象转换核心对象
  • 转换(transaformation)负责数据的输入、转换、校验和输出等,kettle中转换完成了ETL的全部工作

  • 转换由多个步骤 (Step) 组成。包含各种文件格式的数据输入/输出 (如csv文件输入、sql文件输出、sql脚本执行、各种查询等等)

  • 如果各个步骤之间需要数据库操作,我们就需要建立DB连接

  • 各个步骤之间使用跳(Hops)来连接。我们可以将跳理解为一条道路,数据有一个步骤(驿站)通过(道路)流向下一步骤(驿站)

  • kettle中最小的数据单元是

转换

3.1.1 步骤(Step)

步骤是转换里的基本组成部分,上面截图中包含了两个步骤
CSV文件输入
Excel输出

  • 每个步骤都会涉及到数据行

  • 步骤将数据写到与之相连的一个或多个输出跳(hop),再传送到跳的另一端的步骤

  • 大多数的步骤都可以有多个输出跳。一个步骤的数据发送可以被设置为分发复制

    image-20230527212552068

3.1.2 跳(Hop)

是两个步骤(驿站)之间的道路(带箭头的连线)

  • 是两个步骤之间的数据行缓存

  • 当行集了,向行集写数据的步骤将停止写入,直到行集里又有了空间

  • 当行集了,从行集读取数据的步骤停止读取,直到行集里又有可读的数据行

image-20230527212925992

可以通过如下方式查看和修改行缓存大小

①右键转换–>设置② 选择"杂项"tab页
image-20230527213910795image-20230527213956315
3.1.3 元素据

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

通常包含下面一些信息。

名称:数据行里的字段名是唯一的。

数据类型:字段的数据类型。

格式:数据显示的方式,如Integer的#、0.00。

长度:字符串的长度或者BigNumber类型的长度。

精度:BigNumber数据类型的十进制精度。

货币符号:¥

小数点符号:十进制数据的小数点格式。不同文化背景下小数点符号是不同的,一般是点(.)或逗号(,)。

分组符号:数值类型数据的分组符号,不同文化背景下数字里的分组符号也是不同的,一般是点(.)或逗号(,)或单引号(’)

这里的输入文件十csv格式数据,所以分组符号是逗号","

image-20230527221440326

3.1.4 数据类型

数据以数据行(可以理解为一个表格中的一行) 的形式沿着步骤移动,每个数据行又有多个字段元素(可以理解为一个单元格)构成

就像在excel中,每个单元格都可以设置数据格式一样,这里数据行中的字段也有自己的数据类型.

常见的数据类型有以下几种

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

数据类型

3.1.5 并发执行

我们经常需要处理大量的数据,所以设计了这样的行集缓存规则,使得每个步骤就是一个独立线程.所有步骤都以并发方式执行.

当转换启动后,所有步骤都同时启动,从它们的输入跳中读取数据,并把处理过的数据写到输出跳.

直到输入跳里不再有数据,就中止步骤的运行。

当所有的步骤都中止了,整个转换就中止了

如果想要一个任务沿着指定的顺序执行,那么就要使用下面所讲的“作业”来做流程控制

3.2 作业

负责定义一个完成整个工作流的控制,如将转换的结果发送邮件给相关人员.

因为转换(transformation)以并行方式执行,所以必须存在一个串行的调度工具来执行转换,这就是 Kettle中的作业

四、实践操作

4.1 案例1 将csv文件转换成excel文件

4.1.1 在kettle中新建一个转换

新建转换

4.1.2选择输入控件并设置

核心对象–>输入–>CSV文件输入 (将控件拖入工作区)

① 选择CSV文件输入控件②将控件拖入工作区
选择拖入
③ 选择源文件④ 检查csv数据是否正常读出
选择源文件读取数据
4.1.3 选择输出控件并设置
① 选择Excel输出控件②将控件拖入工作区
image-20230527230537467拖入工作区
③ 设置输出文件名
image-20230527231014203
4.1.4 按住shift 通过将输入输出两步骤连接起来

image-20230527231441251

4.1.5 点击启动按钮执行转换

image-20230527231624181

4.1.6查看日志,并检查是否成功
①日志没报错②文件也写入成功了
image-20230527231913544image-20230527232017215

4.2 案列2 将excel文件导入MySQL数据库

4.2.1和上面步骤一样我们需要新建一个转换

案例2转换

4.2.2 新建数据库连接

由于案例2需要涉及到MySQL数据库,所以我们需要建立DB连接

①下载MySQL驱动(需要下载对应版本的) 我用的是MySQL5.7 ,所以这里下载5.1.37 版本驱动

官方地址:https://downloads.mysql.com/archives/c-j/

MySQL驱动下载

② 将下载的好的MySQL驱动包放入lib文件夹下

驱动包路径

③新建DB连接

image-20230527235403720

注: 如果没有下载驱动包或者驱动包版本与MySQL版本不一致,会包如下错误

驱动包不对报错

4.2.3 拖入Excel输入控件并设置

① 将Excel输入控件拖入工作区

Excel输入控件拖入工作区

②设置Excel输入控件

设置源文件

添加文件

获取工作表

获取数据字段

直到点击预览记录后获取到如下截图所示数据,说明输入设置成功了

预览到数据

4.2.4 拖入表输出控件并设置

① 将表输出控件拖入工作区

表输出控件拖入工作区

② 通过 将输入输出控件连接起来

跳连接

③设置需要导入数据的目标表

选择目标表

④ 匹配数据库字段

匹配数据库字段

4.2.5 点击启动按钮进行转换

image-20230528095444390

4.2.6 查看日志并检查MySQL数据表中是否有数据

①日志显示转换成功

日志显示成功

② 我们再来看看数据库test的t_tv 表中也有数据了

image-20230528095831318

到此通过两个案例小试牛刀之后都转换成功了,是不是有点小成就感呢。

其实这只是kettle工具的冰山一角,从kettle那么多核心对象可以看得出来,它还有很多很多很多得玩法等着我们去开启。

本期内容到此就结束了,希望内容对你有所帮助,我们下期再见 (●’◡’●)

上一篇:快速上手kettle(一)壶之简介
下一篇:快速上手kettle(三):kettle常用输入控件使用(小编正在玩命更新中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/581878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Node.js中接受来自命令行的输入

目录 1、简介 2、readlineSync 3、列表选择一个项目: 4、类似滑块范围的UI: 1、简介 如何制作一个Node.js CLI程序使用内置的readline Node.js模块进行交互 如何制作一个节点js CLI程序交互? Node.js 从版本7起开始提供了readline模块来执行以下操…

styleFlow数学推导

如果 w 和 z 的变换是线性的,即 w az b,那么 dw a dz, 所以 p(w) dw p(z) dz 等价于 p(w) a p(z) 即 w 的概率密度函数是 z 的概率密度函数乘以一个常数因子。 如果 w 和 z 是通过一个可逆的函数 ϕ 相互转换的,即 w ϕ(…

5.29今日黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势?今日黄金多空该如何研判? ​黄金消息面解析:上周五(5月26日)美市尾盘,现货黄金收报1946.01美元/盎司,上升4.76美元或0.25%,日内最高触及1957.31美元/盎司,最低触…

1.3 eBPF的工作原理初探 --- 更新中

写在前面 上一节提到过,eBPF程序是面向BPF体系结构指令集编写的,它并不直接运行在Linux内核中,我们可以理解为它是运行在eBPF虚拟机,由eBPF虚拟机来执行eBPF字节码,就像java运行在jvm一样。 我们用一张原理图来看下eBPF程序的编译,加载,验证,钩子,映射等结点。 如上是…

Java学习路线(16)——异常

一、异常 1、概念: 程序在“编译”或“执行”时可能出现的问题。(语法错误不算异常) 2、常见的异常 数组索引越界空指针日期格式化… 3、作用: 触发异常后,如果没有提前处理,JVM将终止,提高…

chatgpt赋能python:Python中None的使用详解

Python中None的使用详解 在Python语言中,None是一个非常常见的值,它在代码中用来表示空值或未定义的值。本文将介绍Python中None的使用方式,包括创建和比较None对象,以及在函数和类中使用None的方法。 创建和比较None对象 在Py…

chatgpt赋能python:Python中Key的作用及使用方法

Python中Key的作用及使用方法 在Python中,key是一个十分重要的概念。它在数据结构中经常被使用,例如list、dict、set、tuple等等。本文将重点介绍Python中key的作用和使用方法,帮助读者更好地理解和应用它。 什么是Key 首先,我…

返回数组中非零元素的索引np.flatnonzero()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 返回数组中非零元素的索引 np.flatnonzero() 选择题 以下程序的运行结果是? import numpy as np anp.array([0,1,2,3]) print("【显示】a:");print(a) print("【执行】print(n…

JLabel默认是透明的,所以JLabel设置背景色setBackground之前要setOpaque(true);

JLabel默认是透明的,所以JLabel设置背景色setBackground之前要setOpaque(true); 将不透明设为true,再setBackground jlabel.setOpaque(true); jlabel.setBackground(new Color(0, 0, 0, 100)); //将不透明设为true,再setBackgroundjlabel.setOpaque(true); jlabel.setBackgro…

chatgpt赋能python:Python中n次方的介绍

Python中n次方的介绍 Python中的n次方是指将一个数值或变量的值提高到某个指定的指数值。这在数据科学、计算机科学和科学计算等领域中非常常见。 在Python中,我们可以使用内置函数**或pow函数来实现n次方。 通过**进行n次方运算 使用**运算符时,将要…

哨兵3号(Sentinel 3)卫星数据处理

李国春 本文介绍使用RSD处理欧空局哨兵3号(Sentinel 3)卫星数据的具体方法。 气象数据多用NetCDF格式交换和存储,气象卫星数据也是如此。气象业内认为HDF5也是NetCDF的一部分,虽然文件扩展名使用的是.nc,但是实际上就…

数据在内存中的存储(1)

目录 一.C语言中数据类型的介绍 1.c语言的内置类型及大小(单位字节) 2.整型家族 3.浮点数家族 4.自定义类型(构造类型) 5.指针类型 6.空类型 二.整型数据在内存中的存储 1.二进制 2.整型数据在内存中的存储(…

读数据压缩入门笔记01_数据压缩导读

1. 建立在数据压缩上的世界 1.1. 数据压缩技术最让人惊异之处在于,它与过去40年里个人计算的很多重大改变有关,但很少有人知道这一点 1.2. 我们当下生活在其中的这个计算世界,完全建立在数据压缩算法之上 1.3. 图像的压缩 1.3.1. 1978年 …

HMM实现中文分词

引言 在隐马尔可夫模型中介绍了HMM的理论部分,为了巩固理论知识,本文基于HMM实现中文分词。具体来说,通过HMM实现基于字级别的分词算法。 HMM 这里简单说明一下,更详细的请参考隐马尔可夫模型。 这里输入序列为 X 1 : N X_{1:N…

【h5】实现语音转文字

【h5】实现语音转文字 一、需求功能概述是: 二、实现过程1、实现按住录音,松开发送。有两个录音按钮。a. 获取用户的麦克风声音和创建一个MediaRecorder对象:b. 启动和停止录音:c. 将音频数据上传到服务器,并在处理完后…

【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const修饰指针,指针和数组,指针和函数

文章目录 1. 定义和使用2. 所占内存空间3. 空指针4. 野指针5. const修饰指针6. 指针和数组7. 指针和函数 1. 定义和使用 数据类型 * 变量名; 指针的作用是,可以通过指针间接访问内存。 内存编号是从 0 开始记录的,一般用十六进制数字表示。可以利用指…

nodejs+vue社区母婴幼儿用品商城系统

本系统实现了管理员对用户、商品信息、交流论坛、订单信息的管理,是为了满足用户更深层次的需求。除了上述优势外,本系统还具有:查询迅速,搜索资料方便,可靠性强等等在如今这个高速发展的时代,效率决定着你…

十款开源测试开发工具推荐(自动化、性能、混沌测试、造数据、流量复制)

在本篇文章中,我将给大家推荐 10 款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、性能压测、流量复制、混沌测试、造数据等。 1、AutoMeter-API 自动化测试平台 AutoMeter 是一款针对分布式服务,微服务 API 做功能和性能一体化…

可靠可用性基本知识

可靠可用性基本知识 1. 基本概念1.1 可靠性1.2 可用性 2. 可靠和可用性指标3. 可靠性工程实践相关概念4. FEMA相关知识4.1 基本概念4.2 FEMA分析流程 5. 产品开发流程中可靠可用性测试如何开展5.1 测试可靠可用性输入\输出5.2 可靠可用性开展流程5.3 测试设计5.4 测试执行5.4.1…

chatgpt赋能python:Numpy读音:是“num-pie”还是“num-pee”?

Numpy读音:是“num-pie”还是“num-pee”? 你是否曾经在想,“numpy”这个词怎么念?很多人都有不同的看法。有些人说“num-pie”,而另一些人则说“num-pee”。那么,谁是正确的呢?在这篇文章中&a…