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

配置拚花平均文件大小

f2008700
新的貢獻者三世

我有S3作為數據源包含樣本TPC數據集(100年10 g, g)。

我想,轉化為拚花平均文件大小約~ 256 mib。設置配置參數我可以用什麼?

我還需要要分區的數據。並在每個分區列,這些文件應基於平均尺寸進行分割。

如果我設置合並選項“df.coalesce(1)”,那麼它隻在每個分區列創建1文件。

我也試過設置參數(根據穀歌搜索)

' ' '

df.write。選項(“maxRecordsPerFile”, 6000000)

df.write.option (“parquet.block。大小”,256 * 1024 * 1024)

' ' '

但這並沒有起到任何幫助。有什麼建議嗎?

7回複7

werners1
尊敬的貢獻者三世

你好,你可能想檢查這個話題

maxPartitionBytes控製文件大小,但它不是一個硬約束(見所以主題)。

f2008700
新的貢獻者三世

謝謝你的指出。

我問實際上正好相反。我想確保拚花的基本尺寸文件不是太小,而是超過一定的基本尺寸/或包含一個最低數量的記錄。

werners1
尊敬的貢獻者三世

我明白了。

這不是一個簡單的。

這取決於你的數據有多大,如果它將分區等。

如果使用分區,分區列的基數的大小決定輸出。

如果你有非常小的數據,一個文件可能不夠等。

所以最好的方法是首先探索你的數據,了解數據概要文件。

合並和重新分配可以定義分區的數量(文件)將被寫入。(當然這是有成本的,額外的洗牌)

但請注意,沒有單一的優化文件大小。

三角洲湖是一個選擇,一些自動化文件優化。絕對值得嚐試。

匿名
不適用

@Vikas戈埃爾:

添加更多的指針,

如果你想確保鋪文件有一個最小大小或包含最低數量的記錄,您可以使用minRecordsPerFile選項在編寫DataFrame拚花格式。下麵是您可以修改您的代碼:

#設置所需的最低數量的記錄/拚花文件min_records_per_file = 1000 #計算每個文件的最大數量的記錄基於所需的最小文件大小max_records_per_file = int ((256 * 1024 * 1024) / (df.schema.jsonSize() + 100)) #選擇之間的最大值計算所需的最小和最大records_per_file = max (min_records_per_file max_records_per_file) #寫DataFrame拚花格式df.write與指定的最低記錄/文件。選項(“minRecordsPerFile records_per_file) .parquet (“s3: / / your_bucket / parquet_output_path”)

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

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

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

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

Baidu
map