簡體   English   中英

為什么我的avro輸出文件在我的養豬工作中是如此之小而如此之多?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM