簡體   English   中英

如何確保在 Foundry Python Transforms 中構建的數據集中文件大小一致?

[英]How do I ensure consistent file sizes in datasets built in Foundry Python Transforms?

我的 Foundry 轉換在不同的運行中產生不同數量的數據,但我希望每個文件中的行數相似。 我可以使用DataFrame.count()然后合並/重新分區,但這需要計算完整的數據集,然后再次緩存或重新計算它。 Spark有辦法解決這個問題嗎?

您可以使用 spark.sql.files.maxRecordsPerFile 配置選項,方法是按照 @transform 的 output 設置它:

output.write_dataframe(
    output_df,
    options={"maxRecordsPerFile": "1000000"},
)

如果您唯一關心的是每個文件的記錄數, proggeo的答案很有用。 但是,有時對數據進行分桶很有用,因此 Foundry 能夠優化下游操作,例如輪廓分析或其他轉換。

在這些情況下,您可以使用以下內容:

bucket_column = 'equipment_number'
num_files = 8
output_df = output_df.repartition(num_files, bucket_column)
output.write_dataframe(
    output_df,
    bucket_cols=[bucket_column],
    bucket_count=num_files,
)

如果您的存儲桶列分布良好,這將有助於保持每個數據集文件的行數相似。

暫無
暫無

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

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