Apache spark 最佳数据湖文件分区大小

Apache spark 最佳数据湖文件分区大小,apache-spark,snowflake-cloud-data-platform,databricks,delta-lake,Apache Spark,Snowflake Cloud Data Platform,Databricks,Delta Lake,在讨论Delta Lake查询的性能问题时,经常提到小文件问题。许多来源建议文件大小为1GB,以获得最佳查询性能 我知道Snowflake和Delta Lake不同,但我认为Snowflake的策略与传统智慧相矛盾,这很有趣。它们依赖于微分区,其目标是在压缩前达到50MB到500MB之间 雪花和三角洲湖有相似的特征: 文件修剪-vs 关于文件内容的元数据-vs 有人能解释为什么雪花在较小的文件上茁壮成长,而传统观点认为Delta Lake在挣扎吗?免责声明:我对雪花不是很熟悉,所以我只能根据

在讨论Delta Lake查询的性能问题时,经常提到小文件问题。许多来源建议文件大小为1GB,以获得最佳查询性能

我知道Snowflake和Delta Lake不同,但我认为Snowflake的策略与传统智慧相矛盾,这很有趣。它们依赖于微分区,其目标是在压缩前达到50MB到500MB之间

雪花和三角洲湖有相似的特征:

  • 文件修剪-vs

  • 关于文件内容的元数据-vs


  • 有人能解释为什么雪花在较小的文件上茁壮成长,而传统观点认为Delta Lake在挣扎吗?

    免责声明:我对雪花不是很熟悉,所以我只能根据Delta Lake的文档和经验来说

    小文件问题通常出现在您存储流数据或类似数据时,并以拼花等格式存储这些数据,这些格式仅依赖于存储提供商提供的文件列表。由于有很多小文件,文件列表非常昂贵,而且往往是花费大部分时间的地方

    Delta Lake通过跟踪清单文件中的文件名,然后按文件名访问对象来解决此问题,而不是列出所有文件并从中提取文件名。在DataRicks上,Delta对数据跳过等进行了更多优化,这可以通过使用清单文件中存储的元数据来实现。正如我从文档中看到的,Snowflake在引擎盖下有类似的东西

    关于文件大小-在增量上,默认大小为~1Gb,但实际上可能要低得多,这取决于存储的数据类型,并且如果我们需要使用新数据更新数据或不更新数据-更新/删除数据时,您需要重写整个文件,如果您有大文件,则需要重写更多