取消
顯示的結果
而不是尋找
你的意思是:

鑲木地板文件合並或其他優化技巧

xxMathieuxxZara
新的因素

你好,

我需要一些引導線的性能問題,鑲花的文件:

我加載一組檢查機關文件使用:df = sqlContext。parquetFile (folder_path)

我的拚花文件夾6分部門的鑰匙

它最初的首樣數據這樣所以我盯著促使更多的組織和性能正在放緩很快就像我這樣做

因為數據到達上麵的文件夾分區的每一天都是“自然”,但它會導致外商投資小,我閱讀是一個瓶頸的解釋

我合並的幾個子文件夾在第二階段?如果那麼函數(python API)我使用嗎?

6個回答6

User16826991422
貢獻者

嗨Mzaradzki -

火花1.5中,我們將添加一個特性來改善緩存元數據在拚花特別所以應該為你的用例以上極大地提高性能。

提高磚的性能的一個選項是使用dbutils.fs。cacheFiles函數來檢查機關文件移動到ssd連接到集群中的工人。

歡呼,

理查德。

你好理查德,

這實際上並行化閱讀頁腳嗎?或者隻是幫助Spark-generated鋪文件?關於序列化的頁腳閱讀,我沒有注意到緩存文件在ssd上獲得巨大收益。

歡呼,

User16765128951
因素二世

你好,

有一些SQL優化我建議你考慮。

1)利用分區表可以幫助你如果你經常隻有從幾天一次訪問數據。有筆記本磚指南中叫做“分區表”,更多的數據。

2)如果你的文件非常小,這是事實,你可以獲得更好的性能將這些文件合並到一個更小的數字。你可以很容易在火花命令如下:

sqlContext。parquetFile (SOME_INPUT_FILEPATTERN) .coalesce (SOME_SMALLER_NUMBER_OF_DESIRED_PARTITIONS) .write.parquet (SOME_OUTPUT_DIRECTORY)

User16301467532
新的貢獻者二世

擁有一個大的#小文件或文件夾可以顯著惡化加載數據的性能。最好的方法是保持文件夾/文件合並,這樣每個文件大約是64 mb的大小。有不同的方法來實現這一目標:作家過程可以在內存中緩衝他們和寫後才到達一個大小或作為第二階段你可以讀取臨時目錄並鞏固他們在一起,寫出來到另一個位置。如果你想做後者,你可以閱讀你的每一個輸入目錄作為dataframe和工會和重新分配到#你想要的文件和轉儲。在Scala代碼片段:

val dfSeq = MutableList [DataFrame] ()

sourceDirsToConsolidate。地圖(dir = > {val df = sqlContext.parquetFile (dir) dfSeq + = df})

val masterDf = dfSeq。減少((df2 df1) = > df1.unionAll (df2)) masterDf.coalesce (numOutputFiles) .write.mode (saveMode) .parquet (destDir)

dataframe的api是在python中相同。所以你可以很容易轉換為python。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map