[英]Why are my avro output files so small and so numerous in my pig job?
我正在運行一個執行一系列連接並使用AvroStorage()編寫的Pig腳本
一切運行良好,並且我正在獲取所需的數據...但是它正在寫入845個Avro文件(每個〜30kb)。 這似乎一點都不對...但是我似乎找不到任何可能更改的設置,從先前的1個大avro輸出更改為845個小avro輸出(添加其他數據源除外)。
這會改變什么嗎? 以及如何將其恢復為一個或兩個文件?
謝謝!
一種可能是更改您的塊大小。 如果要返回較少的文件,也可以嘗試使用鑲木地板。 通過Pig腳本轉換.avro文件並將其像.parquet文件一樣存儲,這將減少845到更少的文件。
但是除了性能方面的優勢外,沒有必要恢復到更少的文件。
MR作業寫入的文件數由運行的減速器數定義。 您可以在Pig腳本中使用PARALLEL來控制減速器的數量。
如果您確定最終數據足夠小(與塊大小相當),則可以將PARALLEL 1添加到JOIN語句中,以確保將JOIN轉換為1個reducer,從而僅將輸出寫入1個文件中。
我使用SET pig.maxCombinedSplitSize 134217728;
解決了這一問題SET pig.maxCombinedSplitSize 134217728;
用SET default_parallel 10;
根據PIG作業,它可能仍會輸出許多小文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.