Pig在MapReduce下的例項

2021-07-27 14:58:02 字數 2096 閱讀 8686

前提:安裝的是完全分布式的hadoop,啟動hadoop,然後啟動pig

根據hadoop權威指南例項實現計算每年的最高溫度。

1、第一步,建立temperature.txt的文件記錄每年的溫度

2、將temperature.txt檔案放到hdfs 檔案上去,具體操作如下:

3、輸入pig,進入shell編輯模式下。

4、檢視temperature是否在in的目錄下,ls in檢視temperature.txt檔案是否傳入。

grunt有預設路徑,通過ls就可以檢視。

5、輸入pig指令碼語句,開始計算

records = load  'in/temperature.txt'  using  pigstorage('  ') as (year:chararray,temperature:int);

注意事項:因為temperature.txt中我使用的是空格進行分割的。所以在這裡使用pigstorage('  ')的方式,如果你的分隔符是tab,就可以按照權威指南裡的步驟進行(不加 using  pigstorage('  ')即可),pigstorage的預設分割方式是tab。我第一次就是沒有加pigstorage導致實驗失敗的。

注意:pig並沒有執行該命令,僅僅是解析了該命令,只有到使用dump命令或者是store命令時pig才會真正執行該命令。dump命令將列印出這個變數的內容,store命令將變數所代表的內容儲存到乙個檔案中。

6、檢視records的內容。

7、對records的內容進行過濾,去掉溫度等於56的一欄

filtered_records = filter records by temperature !=56;

8、檢視filtered_records的內容

9、使用group將filtered_records欄位按照year分組

grouped_records = group filtered_records by year;

10、檢視grouped_records的結果

11、對grouped_records的每行資料進行處理,計算出每年最高氣溫

12、檢視max_temp的結果。

13、使用illustrate檢視結果

通過本次實驗,我們來分析pig的資料模型

filtered_records:bag對應給出的結果

bag是乙個元組,元組中有子元組(tuple),子元組的個數不限,相當於關聯式資料庫中的表,每個表中有很多行

tuple就對應關聯式資料庫中的行,只是它的個數和屬性不要求與其他的tuple一致。

field 對應於關聯式資料庫的屬性,year:chararray給出的就是屬性名year,型別是chararray

Pig解決MapReduce數量少,執行資料慢

當執行pig指令碼,出現map的數量極小,但是執行速度慢時。可以通過適當減小set pig.maxcombinedsplitsize的值來增加map的數量,從而加快執行速度。因為,本地執行job佔全部job的比例越高,則執行速度越快。rack local map tasks 在同乙個機櫃中執行的ma...

Pig語言的學習

pig 是基於hadoop並行資料流語言 pig 輸入輸出 第一步 載入load 最後執行完資料流之後可以可以 store 儲存 或 dump輸出到螢幕 pig 關係操作 foreach 對於每一條記錄,可以選擇相應的字段,傳給下乙個操作符 相當於sql中選擇需要的列,可以進行count和sum操作...

初學pig的筆記

資料分析引擎 pig 一 什麼是pig?安裝和配置 1 最早由yahoo開發,後來給apache 2 支援語句piglatin語句,類似sql 3 翻譯器 piglatin語句 mapreduce spark 從0.17開始支援 4 安裝和配置 tar zxvf pig 0.17.0.tar.gz ...