我正在运行一个使用AvroStorage进行一系列连接并编写的猪脚本()
一切运行良好,我正在获取我想要的数据......但是它被写入845个avro文件(每个~30kb)。这似乎根本不正确...但我似乎找不到任何我可能已经改变的设置,从我以前的1个大avro输出到845个小avros(除了添加另一个数据源)。
这会改变什么吗?我怎样才能将它恢复为一个或两个文件?
谢谢!
答案 0 :(得分:0)
可能是更改块大小。如果你想回到更少的文件,你也可以尝试使用镶木地板。通过pig脚本转换.avro文件并将其存储为.parquet文件,这样可以将845减少到更少的文件。
但除了性能优势之外,没有必要回到更少的文件。
答案 1 :(得分:0)
MR作业写入的文件数由运行的Reducer数量定义。您可以在Pig脚本中使用PARALLEL来控制Reducer的数量。
如果您确定最终数据足够小(与块大小相当),则可以将PARALLEL 1添加到JOIN语句,以确保JOIN转换为1 reducers,从而仅将输出写入1个文件。
答案 2 :(得分:0)
我使用SET pig.maxCombinedSplitSize 134217728;
使用SET default_parallel 10;
它可能仍会输出许多小文件,具体取决于PIG作业。