大数据 ETL 处理工具 Kettle 常用输入输出

元胞星云
• 阅读 2138

相比现在流行大数据技术,你可能觉得 Kettle 的使用场景太少了,或者没有必要使用这么个玩意儿,查看了下 github kettle 发现最近也有一些更新,另外,对于没有编程经验的数据使用人员,使用非常简单的 Kettle,通过图形界面设计实现做什么业务,无需写代码去实现,就可以做一些实验,比如:抓取网站上的股票数据、外汇信息等等。

Kettle 支持很多种输入和输出格式,包括文本文件,数据表,以及数据库引擎。总之,Kettle 强大的输入、输出、转换功能让你非常方便的操作数据。

常用的输入步骤

文件输入步骤

常见文本文件输入步骤包括:CSV 文件输入、Excel输入、文本文件输入等。

在之前的文章中已经介绍过 HelloWorld 级别的功能「把数据从 CSV 文件复制到 Excel 文件」,详细步骤可查阅。

可以选择同一目录下的所有文件,通过选择目录,然后通配符号通配文件,也可以选择是否读取当前目录下子目录的文件,如下图:

大数据 ETL 处理工具 Kettle 常用输入输出

XML 输入步骤

XML 是可扩展标记语言,主要用来传输与存储数据,在一些比较传统的系统还在使用这种方式进行数据传输对接,借助「Get data from XML」输入步骤,获取 XML 文件中的数据信息,通过使用 xpath 来确定 XML 文档中某部分数据的位置,xpath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。

示例

通过向导完成一个示例,读取 POM 文件中的属性配置信息,如下图:

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

xpath 常用表达式

表达式说明
nodename选取此节点的所有子节点
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
...选取当前节点的父节点
@选取属性
div选取 div 元素的所有子节点
/div选取根元素 div
div/p选取 div 元素下的子元素 p
//div选取所有的 div 元素
div//p选取 div 元素下的所有 p 元素
//@lang选取名为 lang 的所有属性

JSON 输入步骤

相比于 XML,是一种轻量型的数据交换格式。JSON 核心概念:数组( [] 中的数据),对象( {} 中的数据),属性( k:v 的数据)

实现「调用 RESTful 接口导入 JSON 结果入库」的功能,不管是通过 Java 或者是 Python 编码的方式调用 RESTful接口将结果入库,都是有一定复杂度的,首先你要加载第三方 REST 组件依赖,然后连接数据库,写 SQL 语句,最后插入的目标数据库中。但我们有了 Kettle 这个工具之后,只需要使用图形化界面 Spoon 就可以很方便的完成接口调用及入库的操作。

通过一个简单的 GET 请求,获取「沪深新股预告」信息,数据情况及操作如下

数据示例

大数据 ETL 处理工具 Kettle 常用输入输出

接口信息

https://xueqiu.com/service/v5...

转换步骤:

大数据 ETL 处理工具 Kettle 常用输入输出

输出结果

大数据 ETL 处理工具 Kettle 常用输入输出

具体配置步骤

大数据 ETL 处理工具 Kettle 常用输入输出

表输入步骤

添加数据库驱动

要是想要操作数据库,就得先下载数据库驱动,然后放置在 /data-integration/lib 下,默认包括如下驱动:

(base)  ~/Documents/apps/data-integration/lib  ls -al | grep sql
-rw-r--r--@   1 Yezhiwei  staff   1473091 Jun 11  2019 hsqldb-2.3.2.jar
-rw-r--r--@   1 Yezhiwei  staff    825943 Jun 11  2019 postgresql-42.2.5.jar
-rw-r--r--@   1 Yezhiwei  staff   3201133 Jun 11  2019 sqlite-jdbc-3.7.2.jar

添加 MySQL 驱动 jar 包 mysql-connector-java-5.1.41.jar 到 /data-integration/lib 下:

大数据 ETL 处理工具 Kettle 常用输入输出

配置数据库连接

大数据 ETL 处理工具 Kettle 常用输入输出

获取表 SQL 查询语句,数据预览

选择数据库连接配置,然后点击「获取 SQL 查询语句」

大数据 ETL 处理工具 Kettle 常用输入输出

选择表,根据提示完成设置,自动生成 SQL,「预览」可以查看数据。

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

常用的输出步骤

通常将数据处理完成后需要保存到一个地方,方便后续使用,通常情况下输出为 Excel 或数据库中,前面的示例中已经介绍过 Excel 输出,下面重点介绍数据库方面的输出步骤。

数据库输出步骤常用的有插入/更新/删除,示例重点体现「插入/更新」和「删除」输出步骤

表输出

将其他输入源的数据输出到表中

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

更新

更新就是把数据库中已经存在的记录与数据流里面的记录进行对比,如果不同就进行更新

插入更新

插入更新就是在更新的基础上插入了数据流中多余的数据

删除

删除可以和自定义常量输入一起使用,定义一个常量条件,不符合这个条件的数据全部删除

示例
数据准备

大数据 ETL 处理工具 Kettle 常用输入输出

数据从 Excel 插入或更新到 MySQL

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

大数据 ETL 处理工具 Kettle 常用输入输出

新数据插入结果

大数据 ETL 处理工具 Kettle 常用输入输出

更新结果

大数据 ETL 处理工具 Kettle 常用输入输出

结语

在数据仓库技术中,ETL 是必不可少,Kettle 作为 ETL 的经典工具,通过图形界面设计实现做什么业务,无需写代码去实现,对于没有编程经验的数据使用人员来说,也是非常简单的。

当然,也存在一些问题,比如:处理的数据量相对小些、文档资料相对少些等等。有机会再总结一下使用过程中遇到的问题。
欢迎关注公众号:HelloTech,获取更多内容

点赞
收藏
评论区
推荐文章
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
GreenPlum tidb 性能比较
主要的需求  针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用  数据可以实时的写入和查询,并发的tps不是很高建立数据仓库,模式上主要采用星星模型、雪花模型,或者宽表前端展示分为3类 saiku、granafa、c代码开发数据体量:事实表在35亿、维度表大的在500
Stella981 Stella981
3年前
Kettle 使用Impala遇到plugin id [IMPALASIMBA] couldn't be found!
这个该死的问题查了我整整3天,差点就放弃了。kettle用的人不多,文档也不太全,源码又重又大。需求是从Impala用SQL读取数据,写入MYSQL。环境是:pdice7.0.0.025 Linux:CentOS7 连接的是ClouderaImpala,使用第三方JDBCjar包:ImpalaJDBC4.jar 在Windo
Stella981 Stella981
3年前
Kettle构建Hadoop ETL实践(一):ETL与Kettle
点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源!(https://oscimg.oschina.net/oscnet/c89e158d10cd4b32aa814d82441219a9.jpg)!(https://oscimg.oschina.net/oscnet/5e8f53277a9c4e51
Wesley13 Wesley13
3年前
MySQL 部署分布式架构 MyCAT (五)
分片(水平拆分)4.全局表业务使用场景:如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大,而且大部分的业务场景都会用到,那么这种表适合于Mycat全局表,无须对数据进行切分,要在所有的分片上保存一份数据即可
Stella981 Stella981
3年前
Google 开源的依赖注入库,比 Spring 更小更快!
!(https://oscimg.oschina.net/oscnet/ea35eab1933347cea91b2ce063269b0e.jpg)来源| zhuanlan.zhihu.com/p/24924391Guice是Google开源的一个依赖注入类库,相比于SpringIoC来说更小更快。Elasticsearch大
UData+StarRocks在京东物流的实践 | 京东物流技术团队
1背景数据服务与数据分析场景是数据团队在数据应用上两个大的方向,行业内大家有可能会遇到下面的问题:1.1数据服务烟囱式开发模式:每来一个需求开发一个数据服务,数据服务无法复用,难以平台化,技术上无法积累服务维护难度大:当开发了大量数据服务后,后期维护是大问
直播预告丨大模型如何在健康医疗中挖出大大的花?
大模型时代,“应用变了”:大模型如何在健康医疗中挖出大大的花?12月1日(周五)14:0015:00开播!大模型时代,给千行百业带来了新的想象空间试想一下,大模型经过专业知识训练竟然能够成为你的健康医疗助手曾经科幻片中的场景,正一步步成为现实这一期,我们将