目錄
一、向Hadoop集羣導入數據(Hadoop copy files)
一、向Hadoop集羣導入數據(Hadoop copy files)
1. 向HDFS導入數據
- 從下面的地址下載web日誌示例文件,解壓縮後的weblogs_rebuild.txt文件放到/root/big_data目錄下。
- 建立一個作業,把文件導入HDFS中。
(1)打開PDI,新建一個作業,如圖1所示。
(2)編輯'Hadoop Copy Files'作業項,如圖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可以看到,作業已經成功執行。
(4)檢查HDFS,結果如圖4所示。
從圖4可以看到,weblogs_rebuild.txt已經傳到了HDFS的/root/big_data目錄下。
2. 向Hive導入數據
- 從下面的地址下載web日誌示例文件,解壓縮後的weblogs_parse.txt文件放到Hadoop的/user/grid/目錄下。
- 建立一個作業,將文件導入到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所示。
(4)保存並執行作業,日誌如圖6所示。
從圖6可以看到,作業已經成功執行。
(5)查詢test.weblogs表,結果如圖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所示。
(4)編輯'Hadoop File Input'步驟,如圖9到圖11所示。
說明:在“File”標籤指定Hadoop集羣和要抽取的HDFS文件;在“Content”標籤指定文件的屬性,以TAB作爲字段分隔符;在“Fields”指定字段屬性。
(5)編輯'Table Output'步驟,如圖12所示。
說明:
- mysql_node3是已經建好的一個本地數據庫連接,參見https://wxy0327.blog.csdn.net/article/details/106406702#%E4%BA%94%E3%80%81%E5%90%8E%E7%BB%AD%EF%BC%88%E5%BB%BA%E7%AB%8BMySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%EF%BC%89。
- “Database fields”標籤不需要設置。
(6)執行下面的腳本建立mysql的表。
use test;
create table aggregate_hdfs (
client_ip varchar(15),
year smallint,
month_num tinyint,
pageviews bigint
);
(7)保存並執行轉換,日誌如圖13所示。
從圖13可以看到,轉換已經成功執行。
(8)查詢mysql表,結果如圖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所示。
(3)編輯'Table input'步驟,如圖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所示。
說明:mysql_node3是已經建好的一個本地數據庫連接;“Database fields”標籤不需要設置。
(5)保存並執行轉換,日誌如圖18所示。
從圖18可以看到,轉換已經成功執行。
(6)查詢mysql表,結果如圖19所示。