天天看點

Kettle【環境搭建 01】【pdi-ce-8.3.0.0 安裝配置】【Linux環境 CentOS Linux release 7.5.1804】【含安裝包雲盤資源1.38G+Demo源碼】

綠色安裝包: pdi-ce-8.3.0.0-371.zip (1.38G)

連結:https://pan.baidu.com/s/12Blwc0Tl5qDM2dY5RW32IQ

提取碼:mn0d

Kettle 現在叫 PDI(Pentaho Data Intergration) 官網 速度很慢🐌 盡管社群版下載下傳是免費的,但且頁面不友好【很難找到下載下傳連結-不瞞您說,我就沒找到 😅】Kettle中文網 【下載下傳收費】但教程總結的很詳細且免費,大家可以學習。

1 介紹

ETL(Extract-Transform-Load的縮寫,即資料抽取、轉換、裝載),這類的工具不少 Flume、Kafka、Sqoop 等,但像 Kettle 這樣功能全面的不多,Kettle 支援圖形化的 GUI 設計界面,更加直覺,可以做一些簡單或複雜的資料抽取、品質檢測、資料清洗、資料轉換、資料過濾等,我放上兩張圖檔,大家一看就明了了【Kettle 是可以部分替代 DataPipeline 的】:

Kettle【環境搭建 01】【pdi-ce-8.3.0.0 安裝配置】【Linux環境 CentOS Linux release 7.5.1804】【含安裝包雲盤資源1.38G+Demo源碼】
Kettle【環境搭建 01】【pdi-ce-8.3.0.0 安裝配置】【Linux環境 CentOS Linux release 7.5.1804】【含安裝包雲盤資源1.38G+Demo源碼】

說明: 我使用 Kettle 有好幾年,一般是借助 shell 腳本調用 Kettle 腳本來完成資料的遷移清洗,也用過 Flume、Sqoop 等大資料相關的工具,寫過Java代碼實作的資料治理項目,Kettle 有自身的優勢,也有它的不足,Kettle 工具不是分布式的,有些操作極其消耗記憶體,處理一些非大量和複雜的資料效率還是很高的。

2 使用

Kettle 是解壓即用的,在 Windows 和 Linux 環境下都可以運作。通常是使用 Windows 環境下的圖形化界面進行腳本的開發,然後在 Linux 環境下進行調用 🐶【問就是穩定】。

Kettle 要運作在 Java 環境下:

[[email protected] bin]# java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
           
# JAVA_HOME 配置環境變量:
vim /etc/profile.d/my_env.sh
# 添加 JAVA_HOME和bin
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
# 使得配置的環境變量立即生效:
	# 首先是要賦權限【隻操作一次就行】
	chmod +x /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh
           

【以上都是正常操作】以下是調用 .ktr 的 shell 腳本内容:

# PDI的解壓路徑
cd /usr/local/data-integration
# ------ 參數 ------
# 年月日
yearMonthDay=$(date +%Y%m%d)
# 電話号碼總數
phoneNum=3000
# 生成檔案路徑
filePath=/home/data-integration/file/test

#生成記錄條數=單次生成數量*生成次數
#單次生成數量
oneTimeCount=1000
#生成次數
totalTime=2

# ------ 腳本及相關資訊 ------
# 執行ktr腳本的工具路徑
pan=/usr/local/data-integration/pan.sh
# ktr、log路徑、ktrName
basedir=/home/data-integration
ktrdir=$basedir/ktr
log=$basedir/log
ktrName=creatData

# 先删除目前日期檔案
rm -f ${filePath}-${yearMonthDay}.txt
echo "删除檔案" ${filePath}-${yearMonthDay}.txt

# 循環調用運作ktr 【-param對應的是.ktr的參數名稱】
for num in $( seq 0 $((${totalTime}-1)) )
 do
 	echo "第[" $((${num} + 1)) "]次,生成[" ${oneTimeCount} "]條資料。"
	echo "随機數 i 序列起始值:" $(( ${oneTimeCount} * ${num} ))
	echo "ID 序列起始值:" $(( ${oneTimeCount} * ${num} * 2 ))
	echo "電話号碼序列起始值:" $[ $(( ${oneTimeCount} * ${num})) % ${phoneNum} ]
    sh $pan -file:$ktrdir/$ktrName.ktr \
			-level:Error \
			-logfile:$log/$ktrName.log \
			-param:copyNum=${oneTimeCount} \
			-param:phoneStart=$[ $(( ${oneTimeCount} * ${num})) % ${phoneNum} ] \
			-param:phoneNum=${phoneNum} \
			-param:iStart=$(( ${oneTimeCount} * ${num} )) \
			-param:idStart=$(( ${oneTimeCount} * ${num} * 2 )) \
			-param:filePath=${filePath}-${yearMonthDay}
 done
           

繼續閱讀