Kettle與Hadoop(四)導入導出Hadoop集羣數據

目錄

一、向Hadoop集羣導入數據(Hadoop copy files)

1. 向HDFS導入數據

2. 向Hive導入數據

二、從Hadoop集羣抽取數據

1. 把數據從HDFS抽取到RDBMS

2. 把數據從Hive抽取到RDBMS

參考:


一、向Hadoop集羣導入數據(Hadoop copy files)

1. 向HDFS導入數據

  • 從下面的地址下載web日誌示例文件,解壓縮後的weblogs_rebuild.txt文件放到/root/big_data目錄下。

http://wiki.pentaho.com/download/attachments/23530622/weblogs_rebuild.txt.zip?version=1&modificationDate=1327069200000

  • 建立一個作業,把文件導入HDFS中。

(1)打開PDI,新建一個作業,如圖1所示。

圖1

(2)編輯'Hadoop Copy Files'作業項,如圖2所示。

圖2

        說明:CDH631是已經建立好的Hadoop Clusters對象,建立過程參見https://wxy0327.blog.csdn.net/article/details/106406702#%E4%BA%8C%E3%80%81%E8%BF%9E%E6%8E%A5Hadoop%E9%9B%86%E7%BE%A4

(3)保存並執行作業,日誌如圖3所示。

圖3

        從圖3可以看到,作業已經成功執行。

(4)檢查HDFS,結果如圖4所示。

圖4

        從圖4可以看到,weblogs_rebuild.txt已經傳到了HDFS的/root/big_data目錄下。

2. 向Hive導入數據

  • 從下面的地址下載web日誌示例文件,解壓縮後的weblogs_parse.txt文件放到Hadoop的/user/grid/目錄下。

http://wiki.pentaho.com/download/attachments/23530622/weblogs_parse.txt.zip?version=1&modificationDate=1327068013000

  • 建立一個作業,將文件導入到hive表中。

(1)執行下面的HSQL建立一個hive表,表結構與weblogs_parse.txt文件的結構相同。

create table test.weblogs (
client_ip         string,
full_request_date string,
day               string,
month             string,
month_num         int,
year              string,
hour              string,
minute            string,
second            string,
timezone          string,
http_verb         string,
uri               string,
http_status_code  string,
bytes_returned    string,
referrer          string,
user_agent        string)
row format delimited fields terminated by '\t';

(2)打開PDI,新建一個作業,如圖1所示。
(3)編輯'Hadoop Copy Files'作業項,如圖5所示。

圖5

(4)保存並執行作業,日誌如圖6所示。

圖6

        從圖6可以看到,作業已經成功執行。

(5)查詢test.weblogs表,結果如圖7所示。

圖7

        從圖7可以看到,向test.weblogs表中導入了445454條數據。

二、從Hadoop集羣抽取數據

1. 把數據從HDFS抽取到RDBMS

(1)從下面的地址下載示例文件。 
http://wiki.pentaho.com/download/attachments/23530622/weblogs_aggregate.txt.zip?version=1&modificationDate=1327067858000

(2)用hdfs用戶執行下面的命令,把解壓縮後的weblogs_aggregate.txt文件放到HDFS的/user/root/目錄下,並修改讀寫權限。

hdfs dfs -put -f /root/weblogs_aggregate.txt /user/root/
hdfs dfs -chmod -R 777 /

(3)打開PDI,新建一個轉換,如圖8所示。

圖8

(4)編輯'Hadoop File Input'步驟,如圖9到圖11所示。

圖9
圖10
圖11

        說明:在“File”標籤指定Hadoop集羣和要抽取的HDFS文件;在“Content”標籤指定文件的屬性,以TAB作爲字段分隔符;在“Fields”指定字段屬性。

(5)編輯'Table Output'步驟,如圖12所示。

圖12

        說明:

(6)執行下面的腳本建立mysql的表。

use test;
create table aggregate_hdfs (
    client_ip varchar(15),
    year smallint,
    month_num tinyint,
    pageviews bigint
);

(7)保存並執行轉換,日誌如圖13所示。

圖13

        從圖13可以看到,轉換已經成功執行。

(8)查詢mysql表,結果如圖14所示。

圖14

        從圖14可以看到,數據已經從HDFS抽取到了mysql表中。

2. 把數據從Hive抽取到RDBMS

(1)執行下面的腳本建立mysql的表

use test;
create table aggregate_hive (
    client_ip varchar(15),
    year varchar(4),
    month varchar(10),
    month_num tinyint,
    pageviews bigint
);

(2)打開PDI,新建一個轉換,如圖15所示。

圖15

(3)編輯'Table input'步驟,如圖16所示。

圖16

        說明:hive_cdh631是已經建好的一個hive數據庫連接,參見https://wxy0327.blog.csdn.net/article/details/106406702#%E4%B8%89%E3%80%81%E8%BF%9E%E6%8E%A5Hive

(4)編輯'Table output'步驟,如圖17所示。

圖17

        說明:mysql_node3是已經建好的一個本地數據庫連接;“Database fields”標籤不需要設置。

(5)保存並執行轉換,日誌如圖18所示。

圖18

        從圖18可以看到,轉換已經成功執行。

(6)查詢mysql表,結果如圖19所示。

圖19

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章