首頁 > 軟體

kettle在windows上安裝設定與實踐案例

2022-11-11 14:01:31

第1章 kettle概述

1.1 什麼是kettle

Kettle是一款開源的ETL工具,純java編寫,可以在Window、Linux、Unix上執行,綠色無需安裝,資料抽取高效穩定。

1.2 Kettle核心知識點

1.2.1 Kettle工程儲存方式

1) 以XML形式儲存

2) 以資源庫方式儲存(資料庫資源庫和檔案資源庫)

1.2.2 Kettle的兩種設計

簡述:Transformation(轉換):完成針對資料的基礎轉換。

      Job(作業):完成整個工作流的控制。

區別:(1)作業是步驟流,轉換是資料流,這是作業和轉換的最大區別

           (2)作業的每一個步驟,必須等到前面的步驟都跑完了,後面的步驟才會執行;而轉換會一次性把所有控制元件全部先啟動(一個空間對應啟動一個執行緒),然後資料流會從第一個控制元件開始,一條記錄,一條記錄地流向最後的控制元件。

1.2.3 Kettle的組成

  • 勺子(spoon.bat/spoon.sh):是一個圖形化的介面,可以讓我們用圖形化的方式開發轉換和作業。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的免費開源的軟體,對商業使用者也沒有限制

易設定:可以在window、Linux、unix上執行,綠色無需安裝,資料抽取高效穩定

不同資料庫:ETL工具集,它允許你管理來自不同資料庫的資料

兩種指令碼檔案:transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流的控制

圖形化介面設計:通過圖形化設計實現做什麼業務,無需寫程式碼去實現

定時功能:在job下的start模組,有一個定時功能,可以每日、每週等方式進行定時。

第2章 kettle安裝部署和使用

2.1 kettle安裝地址

官網地址

Home - Hitachi Vantara

下載地址

https://sourceforge.net/projects/pentaho/files/Data%20Integration/

kettle各版本國內映象下載地址:http://mirror.bit.edu.cn/pentaho/(下載速度相對快一些)

2.2 Windows下安裝使用

2.2.1 概述

在實際企業開發中,都是在本地環境下進行kettle的job和Transformation開發的,可以在本地執行,也可以連線遠端機器執行

2.2.2 安裝

1) 安裝jdk

2) 下載kettle壓縮包,因kettle為可攜式軟體,解壓縮到任意本地路徑即可

3) 雙擊Spoon.bat,啟動圖形化介面工具,就可以直接使用了

2.2.3 案例

1) 案例一 把stu1的資料按id同步到stu2,stu2有相同id則更新資料

(1)在mysql中建立兩張表

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)往兩張表中插入一些資料

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資料庫,需要要先將mysql的連線驅動包複製到kettle的根目錄下的lib目錄中,否則會報錯找不到驅動。

2) 案例2:使用作業執行上述轉換,並且額外在表stu2中新增一條資料

(1)新建一個作業

(2) 按圖示拉取元件

(3)雙擊Start編輯Start

(4)雙擊轉換,選擇案例1儲存的檔案

(5)雙擊SQL,編輯SQL語句

(6)儲存執行

執行之前,檢視資料:

執行之後檢視結果:會發現除了剛才我們寫的,insert語句之外,stu1表中的id為1004的也插入到stu2中了,因為我們執行了stu1tostu2.ktr轉換。

注:轉換和作業的字尾不同

3)案例3:將hive表的資料輸出到hdfs

(1)因為涉及到hive和hbase的讀寫,需要修改相關組態檔。

修改解壓目錄下的data-integrationpluginspentaho-big-data-plugin下的plugin.properties,設定active.hadoop.configuration=hdp26,並將如下組態檔從叢集上拷貝到data-integrationpluginspentaho-big-data-pluginhadoop-configurationshdp26下

注意:以上操作完,需要重啟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)建立兩張表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)插入資料

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)設定欄位選擇

“選擇和修改”、“後設資料”什麼都不操作即可,只操作“移除”。如果操作了“後設資料”,那麼要注意和“移除”比較一下,欄位是否一致,不然會報錯。

(11)設定檔案輸出

跟前端頁面一致

(12)儲存並執行檢視hdfs

我們下載下來看一下:

4)案例4:讀取hdfs檔案並將sal大於1000的資料儲存到hbase中

(1) 在HBase中建立一張表用於存放資料

[root@node4 ~]# hbase shell

hbase(main):002:0> create 'people','info'

(2)按下圖建立流程圖

(3)設定檔案輸入,連線hdfs

(4)設定過濾記錄

(5)設定HBase output

注意:若報錯沒有許可權往hdfs寫檔案,在Spoon.bat中第119行新增引數

"-DHADOOP_USER_NAME=node4" "-Dfile.encoding=UTF-8"

(6) 保持並執行,檢視hbase

2.3 建立資源庫

2.3.1 資料庫資源庫

資料庫資源庫是將作業和轉換相關的資訊儲存在資料庫中,執行的時候直接去資料庫讀取資訊,很容易跨平臺使用

1)點選右上角connect,選擇Other Resporitory

2) 選擇Database Repository

3) 建立新連線

4) 填好之後,點選finish,會在指定的庫中建立很多表,至此資料庫資源庫建立完成

5) 連線資源庫

預設賬號密碼為admin

6) 將之前做過的轉換匯入資源庫

(1)選擇從xml檔案匯入

(2)隨便選擇一個轉換

(3)點選儲存,選擇儲存位置及檔名

(4)開啟資源庫檢視儲存結果

2.3.2 檔案資源庫

將作業和轉換相關的資訊儲存在指定的目錄中,其實和XML的方式一樣

建立方式跟建立資料庫資源庫步驟類似,只是不需要使用者密碼就可以存取,跨

平臺使用比較麻煩

1)選擇connect

2)點選add後點選Other Repositories

3)選擇File Repository

4)填寫資訊

到此這篇關於kettle在windows上安裝設定與實踐案例的文章就介紹到這了,更多相關kettle在windows安裝內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com