hadoop入門--使用Apache Pig統計每個航班班次

案例基於hadoop 2.73,僞分佈式集羣


1,數據包導入hadoop集羣hdfs的/user/root目錄下

hdfs dfs -copyFromLocal 2008.csv /user/root

2,編寫totalmiles.pig腳本

records = LOAD '2008.csv' USING PigStorage(',') AS
(Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance:int,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay);
milage_recs = GROUP records ALL;
tot_miles = FOREACH milage_recs GENERATE SUM(records.Distance);
STORE tot_miles INTO '/user/root/totalmiles';
  • LOAD:讀取hdfs的某個文件或某個目錄下所有文件。

  • USING:默認情況下Pig解析文件內容是以Tab空格相隔進行的,可以指定函數定製Pig解析是以逗號進行的。

  • AS xx:hdfs可以存儲任何原始數據,Pig需要從hdfs讀取數據並解析成Pig理解的數據模型。

  • GROUP … ALL:把每類結果集進行聚合操作。

  • FOREACH A GENERATE B:A結果集使用B函數轉換成一個單一的值。

  • STORE INTO:把結果存儲到hdfs。

3,命令行執行totalmiles.pig腳本

pig -x mapreduce totalmiles.pig

提示:-x+mapreduce/spark/tez等,選擇哪一種,是根據集羣所選取的計算框架是哪種。

運行情況:

Details at logfile: /usr/test/code/pig_1516001376428.log
2018-01-14 23:29:39,112 [main] INFO  org.apache.pig.Main - Pig script completed in 3 seconds and 128 milliseconds (3128 ms)

4,查看結果

hdfs dfs -cat /user/root/totalmiles/part-r-00000

結果情況:

[root@slave1 code]# hdfs dfs -cat /user/root/totalmiles/part-r-00000
5091775499

資料:
1、《Hadoop For Dummies》
2、《Aapache Pig Getting Started》

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