kettle在windows上安裝配置與實踐案例
第1章 kettle概述
1.1 什么是kettle
Kettle是一款開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定。
1.2 Kettle核心知識點
1.2.1 Kettle工程存儲方式
1) 以XML形式存儲
2) 以資源庫方式存儲(數(shù)據(jù)庫資源庫和文件資源庫)
1.2.2 Kettle的兩種設計
簡述:Transformation(轉換):完成針對數(shù)據(jù)的基礎轉換。
Job(作業(yè)):完成整個工作流的控制。
區(qū)別:(1)作業(yè)是步驟流,轉換是數(shù)據(jù)流,這是作業(yè)和轉換的最大區(qū)別
(2)作業(yè)的每一個步驟,必須等到前面的步驟都跑完了,后面的步驟才會執(zhí)行;而轉換會一次性把所有控件全部先啟動(一個空間對應啟動一個線程),然后數(shù)據(jù)流會從第一個控件開始,一條記錄,一條記錄地流向最后的控件。
1.2.3 Kettle的組成
- 勺子(spoon.bat/spoon.sh):是一個圖形化的界面,可以讓我們用圖形化的方式開發(fā)轉換和作業(yè)。Windows選擇spoon.bat;Linux選擇spoon.sh
- 煎鍋(pan.bat/pan.sh):利用pan可以用命令行的形式調用Trans
- 廚房(kitchen.bat/kitchen.sh):利用kitchen可以使用命令調用Job
- 菜單(carte.bat/carte.sh):carte是一個輕量級的web容器,用于建立專用、遠程的ETL Server
1.3 kettle特點
免費開源:基于Java的免費開源的軟件,對商業(yè)用戶也沒有限制
易配置:可以在window、Linux、unix上運行,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定
不同數(shù)據(jù)庫:ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù)
兩種腳本文件:transformation和job,transformation完成針對數(shù)據(jù)的基礎轉換,job則完成整個工作流的控制
圖形化界面設計:通過圖形化設計實現(xiàn)做什么業(yè)務,無需寫代碼去實現(xiàn)
定時功能:在job下的start模塊,有一個定時功能,可以每日、每周等方式進行定時。
第2章 kettle安裝部署和使用
2.1 kettle安裝地址
官網地址
下載地址
https://sourceforge.net/projects/pentaho/files/Data%20Integration/
kettle各版本國內鏡像下載地址:http://mirror.bit.edu.cn/pentaho/(下載速度相對快一些)
2.2 Windows下安裝使用
2.2.1 概述
在實際企業(yè)開發(fā)中,都是在本地環(huán)境下進行kettle的job和Transformation開發(fā)的,可以在本地運行,也可以連接遠程機器運行
2.2.2 安裝
1) 安裝jdk
2) 下載kettle壓縮包,因kettle為綠色軟件,解壓縮到任意本地路徑即可
3) 雙擊Spoon.bat,啟動圖形化界面工具,就可以直接使用了
2.2.3 案例
1) 案例一 把stu1的數(shù)據(jù)按id同步到stu2,stu2有相同id則更新數(shù)據(jù)
(1)在mysql中創(chuàng)建兩張表
mysql> create database kettle; mysql> use kettle; mysql> create table stu1(id int,name varchar(20),age int); mysql> create table stu2(id int,name varchar(20));
(2)往兩張表中插入一些數(shù)據(jù)
mysql> insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23); mysql> insert into stu2 values(1001,'wukong');??
(3)在kettle中新建轉換
(4)分別在輸入和輸出中拉出表輸入和插入/更新
(5)雙擊表輸入對象,填寫相關配置,測試是否成功
(6)雙擊 更新/插入對象,填寫相關配置
編輯映射,添加需要的字段,因為表stu2中沒有age,所以不需要Add
(7)保存轉換,啟動運行,去mysql表查看結果
注意:如果需要連接mysql數(shù)據(jù)庫,需要要先將mysql的連接驅動包復制到kettle的根目錄下的lib目錄中,否則會報錯找不到驅動。
2) 案例2:使用作業(yè)執(zhí)行上述轉換,并且額外在表stu2中添加一條數(shù)據(jù)
(1)新建一個作業(yè)
(2) 按圖示拉取組件
(3)雙擊Start編輯Start
(4)雙擊轉換,選擇案例1保存的文件
(5)雙擊SQL,編輯SQL語句
(6)保存執(zhí)行
運行之前,查看數(shù)據(jù):
運行之后查看結果:會發(fā)現(xiàn)除了剛才我們寫的,insert語句之外,stu1表中的id為1004的也插入到stu2中了,因為我們執(zhí)行了stu1tostu2.ktr轉換。
注:轉換和作業(yè)的后綴不同
3)案例3:將hive表的數(shù)據(jù)輸出到hdfs
(1)因為涉及到hive和hbase的讀寫,需要修改相關配置文件。
修改解壓目錄下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,設置active.hadoop.configuration=hdp26,并將如下配置文件從集群上拷貝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下
注意:以上操作完,需要重啟kettle才能生效
(2)啟動hdfs,yarn,zookeeper,hbase集群的所有進程,啟動hiveserver2服務
[root@node4 hadoop-2.6.4]# sbin/start-dfs.sh [root@node4 hadoop-2.6.4]# sbin/start-yarn.sh
三臺服務器分別開啟HBase前啟動Zookeeper
[root@node4 hadoop-2.6.4]# zkServer.sh start [root@node5 hadoop-2.6.4]# zkServer.sh start [root@node6 hadoop-2.6.4]# zkServer.sh start
開啟hbase
[root@node4 hbase-1.2.3]# bin/start-hbase.sh
開啟hive2
[root@node4 ~]# hiveserver2
(3)進入beeline,查看10000端口開啟情況
[root@node4 ~]# beeline(回車)
Beeline version 2.1.0 by Apache Hive
beeline> !connect jdbc:hive2://node4:10000
Connecting to jdbc:hive2://node4:10000
Enter username for jdbc:hive2://node4:10000: root(輸入用戶名,回車)
Enter password for jdbc:hive2://node4:10000: ******(輸入密碼,回車)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hive/apache-hive-2.1.0-bin/lib/hive-jdbc-2.1.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop/hadoop-2.6.4/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connected to: Apache Hive (version 2.1.0)
Driver: Hive JDBC (version 2.1.0)
20/05/23 20:05:58 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node4:10000>(到了這里說明成功開啟10000端口)
(4)創(chuàng)建兩張表dept和emp
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';
(5)插入數(shù)據(jù)
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);
(6)按下圖建立流程圖
(7)設置表輸入,連接hive
表輸入1
表輸入2
(8)設置排序屬性
(9)設置連接屬性
(10)設置字段選擇
“選擇和修改”、“元數(shù)據(jù)”什么都不操作即可,只操作“移除”。如果操作了“元數(shù)據(jù)”,那么要注意和“移除”比較一下,字段是否一致,不然會報錯。
(11)設置文件輸出
跟前端頁面一致
(12)保存并運行查看hdfs
我們下載下來看一下:
4)案例4:讀取hdfs文件并將sal大于1000的數(shù)據(jù)保存到hbase中
(1) 在HBase中創(chuàng)建一張表用于存放數(shù)據(jù)
[root@node4 ~]# hbase shell
hbase(main):002:0> create 'people','info'
(2)按下圖建立流程圖
(3)設置文件輸入,連接hdfs
(4)設置過濾記錄
(5)設置HBase output
注意:若報錯沒有權限往hdfs寫文件,在Spoon.bat中第119行添加參數(shù)
"-DHADOOP_USER_NAME=node4" "-Dfile.encoding=UTF-8"
(6) 保持并運行,查看hbase
2.3 創(chuàng)建資源庫
2.3.1 數(shù)據(jù)庫資源庫
數(shù)據(jù)庫資源庫是將作業(yè)和轉換相關的信息存儲在數(shù)據(jù)庫中,執(zhí)行的時候直接去數(shù)據(jù)庫讀取信息,很容易跨平臺使用
1)點擊右上角connect,選擇Other Resporitory
2) 選擇Database Repository
3) 建立新連接
4) 填好之后,點擊finish,會在指定的庫中創(chuàng)建很多表,至此數(shù)據(jù)庫資源庫創(chuàng)建完成
5) 連接資源庫
默認賬號密碼為admin
6) 將之前做過的轉換導入資源庫
(1)選擇從xml文件導入
(2)隨便選擇一個轉換
(3)點擊保存,選擇存儲位置及文件名
(4)打開資源庫查看保存結果
2.3.2 文件資源庫
將作業(yè)和轉換相關的信息存儲在指定的目錄中,其實和XML的方式一樣
創(chuàng)建方式跟創(chuàng)建數(shù)據(jù)庫資源庫步驟類似,只是不需要用戶密碼就可以訪問,跨
平臺使用比較麻煩
1)選擇connect
2)點擊add后點擊Other Repositories
3)選擇File Repository
4)填寫信息
到此這篇關于kettle在windows上安裝配置與實踐案例的文章就介紹到這了,更多相關kettle在windows安裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MobaXterm遠程連接Linux服務器(Ubuntu)圖文教程
這篇文章主要為大家介紹了MobaXterm遠程連接Linux服務器(Ubuntu)的相關教程,文中通過圖文進行了詳細的總結,需要的小伙伴可以收藏下2023-08-08基于 Dubbo Admin 動態(tài)調整服務超時時間的操作步驟
Dubbo提供動態(tài)調整超時時間的服務治理能力,可以在無需重啟應用的情況下,動態(tài)調整服務超時時間,這篇文章主要介紹了基于 Dubbo Admin 動態(tài)調整服務超時時間,需要的朋友可以參考下2022-12-12關于最新IDEA2020.2.1,2.2,3以上破解,激活失效,重新激活的問題
今天很多朋友找小編說idea2020.2.3版本激活失效了,下面通過本文給大家分享了最新IDEA2020.2.1,2.2,2.3,idea.3以上破解,激活失效,重新激活的解決方法,需要的朋友參考下吧2020-10-10