簡體   English   中英

如何減少Spark中的多個小文件加載時間

[英]how to reduce multiple small file load time in spark

我在給定的HDFS位置中有多個實木復合地板小文件(給定月份的計數是遞增的,因為給定月份每天收到兩個或更多文件)。 當我嘗試從SPARK 2.1中的HDFS位置讀取文件時,讀取這些文件所花費的時間更多,並且當將更多的小文件添加到給定位置時,這些時間是遞增的。

由於文件很小,因此我不想在HDFS中進一步分區。

通過在HDFS上創建目錄來創建分區,然后將文件放在這些目錄中。 文件格式為Parquet。

是否有其他格式或過程可一次讀取所有小文件,以便減少讀取小文件的時間。

注意:1)嘗試創建一個可以將所有小文件合並為一個文件的程序,將會對我的所有SLA進行額外的處理,以完成我的過程,因此我將其作為最后的選擇。

如果您不想合並文件,則應考慮重新設計上游流程,以首先限制所創建文件的數量。 如果生產者是Spark,則可以在寫入之前例如coalescerepartitionSpark數據幀寫入方法,寫入許多小文件 )。

除此之外(或作為一個單獨的步驟合並),您無能為力。 讀取小文件非常昂貴。 調整spark.sql.files.openCostInBytes

可以同時掃描打開文件的估計成本(以字節數衡量)。 將多個文件放入分區時使用。 最好高估一下,然后,具有較小文件的分區將比具有較大文件的分區(首先安排)更快。

在某種程度上可能有所幫助,但我不希望奇跡。

請嘗試WholeTextFiles! 這適用於許多小文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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