七十八、Kettle的几个使用案例
上一篇文章我们介绍了一下Kettle以及Kettle的安装部署,本文我们来具体看几个例子,看看Kettle是怎样使用的。使用示例我们基于Windows安装的Kettle进行演示说明。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~
目录
一、案例一:把stu1的数据按id同步到stu2,stu2有相同id则更新数据。
二、案例二:使用作业执行上述转换,并且额外在表stu2中添加一条数据。
三、案例三:将Hive表的数据输出到HDFS。
四、案例四:读取HDFS文件并将sal大于1000的数据保存到HBase中。
五、Kettle调优
一、案例一:把stu1的数据按id同步到stu2,stu2有相同id则更新数据。
1、需求
把stu1的数据按id同步到stu2,stu2有相同id则更新数据。
2、在MySQL中创建两张表并插入一些数据
create table stu1(id int,name varchar(20),age int);
create table stu2(id int,name varchar(20));insert into stu1 values(1001,'xzw',20),(1002,'fq',18), (1003,'yxy',23);
insert into stu2 values(1001,'lyq');
3、在kettle中新建转换
4、分别在输入和输出中拉出表输入和插入/更新
5、双击表输入对象,填写相关配置信息。
6、双击更新/插入对象,填写相关配置信息
7、保存转换,运行
8、在MySQL中查看运行结果,发现已经完成了数据的同步。
二、案例二:使用作业执行上述转换,并且额外在表stu2中添加一条数据。
1、需求
使用作业执行上述转换,并且额外在表stu2中添加一条数据。
2、新建作业
3、拉取相关组件,如下图所示。
4、双击start编辑start
5、双击转换,选择案例一保存的文件。
6、双击SQL,编辑SQL语句。
7、保存执行,查看MySQL中的结果
三、案例三:将Hive表的数据输出到HDFS。
1、需求
将Hive表的数据输出到HDFS。
2、修改配置文件
(1)修改解压目录data-integration\plugins\pentaho-big-data-plugin下的plugin.properties。
active.hadoop.configuration=hdp26
(2)将下面的配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26目录下。
3、启动Hadoop集群以及相关组件,启动hiveserver2功能
[root@master hive]# bin/hiveserver2
进入beeline:
[root@master hive]# bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://master:10000
Connecting to jdbc:hive2://master:10000
Enter username for jdbc:hive2://master:10000: root
Enter password for jdbc:hive2://master:10000: ********
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://master:10000> show databases;
+----------------+--+
| database_name |
+----------------+--+
| default |
| xzw |
+----------------+--+
2 rows selected (1.66 seconds)
0: jdbc:hive2://master:10000>
4、创建两张表并导入数据
CREATE TABLE dept(deptno int, dname string,loc string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm int,
deptno int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';insert into dept values(10,'accounting','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');insert into emp values
(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),
(7499,'ALLEN','SALESMAN',7698,'1980-12-17',1600,300,30),
(7521,'WARD','SALESMAN',7698,'1980-12-17',1250,500,30),
(7566,'JONES','MANAGER',7839,'1980-12-17',2975,NULL,20);
5、建立流程图
6、设置表输入,连接Hive。
7、设置排序属性
8、设置连接属性
9、设置字段选择
10、设置文件输出
(1)编辑HDFS连接
(2)配置内容、字段等等
11、保存并测试
四、案例四:读取HDFS文件并将sal大于1000的数据保存到HBase中。
1、需求
读取HDFS文件并将sal大于1000的数据保存到HBase中。
2、首先在HBase中创建一张用于存放数据的表
3、建立流程图
4、设置文件输入,连接HDFS
5、设置过滤记录
6、设置HBase输出
(1)设置映射
(2)连接参数
7、保存并测试
五、Kettle调优
1、修改Kettle根目录下的Spoon脚本,调整JVM大小进行性能优化。
1、-Xmx2048m:设置JVM最大可用内存为2048M。
2、-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
3、-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
4、-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
2、调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000。
3、尽量使用数据库连接池。
4、尽量提高批处理的commit size。
5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)。
6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle。
7、可以使用sql来做的一些操作尽量用sql。
8、插入大量数据的时候尽量把索引删掉。
9、尽量避免使用update、delete操作,尤其是update,如果可以把update变成先delete后insert。
10、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建。
11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的)。
12、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader、mysql的bulk loader步骤)。
以上就是本文的所有内容,比较简单。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~
七十八、Kettle的几个使用案例相关推荐
- JavaScript学习(七十八)—实现对数据的浅拷贝和深拷贝
JavaScript学习(七十八)-实现对数据的浅拷贝和深拷贝 一.浅拷贝 浅拷贝:对于引用类型的数据只拷贝该数据的地址,这种拷贝称为浅拷贝 注意:拷贝出来的数据和原有的数据指向同一个空间,即他们操作 ...
- 中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八-->12345678)
昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2-十换成10.可是那么问题来了- 一十二呢-不能是11 ...
- 七十八首适合相册视频的背景音乐
七十八首适合相册视频的背景音乐 转载▼ 记得初次接触相册视频制作时,没有意识到音乐的重要性,胡乱添加自己喜欢的音乐,结果很多时候相册总给人的感觉"不搭配",没法提起兴致继续下去. ...
- “任性”华为 | 七十八岁老人的“四渡赤水”(二)
导读 华为是一家"任性"的企业--因为任正非将自己的性格赋予了华为--在企业前进的每一个路口,都会看见这种性格的印记. 2022年12月,当美国总统拜登出现在凤凰城出席台积电工厂迁 ...
- 七十八、 回溯法解决八皇后问题
@Author:Runsen 八皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后. 来自百度百科,皇后的走法是可 ...
- 真题详解(数字签名算法)-软件设计(七十八)
真题详解(有限自动机)-软件设计(七十七)https://blog.csdn.net/ke1ying/article/details/130748759 可用于数字签名算法的是_____. 答案:非对 ...
- Java程序员从笨鸟到菜鸟之(七十八)细谈Spring(七)spring之JDBC访问数据库及配置详解
利用spring访问数据库是我们ssh程序中必不可少的步骤,在没有hibernate之前,我们一般都用jdbc访问数据库,所以用jdbc访问数据库必不可少的要进行一些配置,spring中为我们提供了访 ...
- 七十八、Antd 实现 TodoList 页面布局和Redux入门
2020/11/20. 周五.今天又是奋斗的一天. @Author:Runsen React,相比于Vue,React更加灵活,但是对JavaScript基础的要求也更高一些.我继续学习React A ...
- 七十八、SpringBoot监听rabbitmq和创建交换器,队列
@Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 AmqpAdm ...
最新文章
- 吴恩达,45岁生日快乐!提出著名二八定律:80%数据+20%模型=更好的AI
- 深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式
- webclient 和 webrequest获取网页源码的
- 用Heartbeat实现web服务器高可用
- java 图片服务器 上传_Java实现把图片上传到图片服务器(nginx+vsftp)
- Visual Studio Code 支持TensorFlow配置支持
- 如何使用百度云人脸识别服务(V3版接口python语言) (九)批量向人脸库中添加人脸
- linux mtd 块设备,基于块设备子系统的MTD子系统(2.6.26)
- Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘D:\DumpStack.log.tmp
- ubuntu20.04搭建janus服务器
- 制造业信息化的长治久安之计--Agentflow解决方案简介
- k8s coredns ContainerCreating
- bilibili正在缓冲却无法播放
- 第三只眼看费城自由钟---旅美散记之四
- ADATE320介绍
- 工欲善其事必先利其器——Elasticsearch安装
- NeuroImage:脑网络分析揭示社交焦虑症患者的大脑功能环路异常
- 吴恩达ex3_吴恩达机器学习代码及相关知识点总结--ex3(1.神经网络)
- 免费空间2015大主机免费的时代
- 自己动手写CPU(7)流水线暂停机制+乘累加累减+除法指令
热门文章
- 代码块的渲染类型选择测试
- Hash 和 History模式的区别
- 全新版PS色环插件Coolorus,支持PSCS6-CC2022
- php中下列哪些说法是正确的,关于PHP函数,下列定义方式正确的是
- 未名企鹅极客 | 医药数据管理中的短文本高效匹配技术
- 恒星结构和演化-学习记录2-第三章-物态方程1
- 操作系统课程设计——时间片轮转算法模拟
- Web 3浪潮席卷东南亚 越南为何会成为“热点”地区
- 超强大的dnsmasq及hosts全自动脚本扶墙去广告详细教程
- 安卓 文本框怎么贴近边缘_flash怎么设置帧频-Adobe flash修改帧频的方法