如何修复外部数据砖表中的块大小



我有一个SQL笔记本来更改数据并插入到另一个表中。

当我尝试更改 blobStorage 中的存储块大小时,我遇到了一种情况,我希望拥有更少和更大的文件。我尝试更改很多参数。

所以我发现了一种行为。

当我运行笔记本时,该命令为每个文件创建近 10MB 的文件。

如果我在数据砖中内部创建表并运行另一个 comand

将external_table创建为

从internal_table中选择 *

这些文件有近 40 MB...

所以我的问题是..

有没有办法修复外部数据砖表中的最小块大小?当我在 SQL 笔记本中转换数据时,我们有最好的实践吗?就像转换所有数据并存储在本地一样,以便之后将数据移动到外部源?

谢谢!

Spark 没有一种直接的方法来控制输出文件的大小。人们使用的一种方法是调用repartitioncoalesce所需文件的数量。要使用它来控制输出文件的大小,您需要知道要创建多少个文件,例如要创建 10MB 的文件,如果您的输出数据为 100MB,您可以在 write 命令之前调用 repartition(10)

听起来您正在使用 Databricks,在这种情况下,您可以将 OPTIMIZE 命令用于增量表。Delta 的 OPTIMIZE 将获取您的底层文件并为您压缩成大约 1GB 的文件,这是大数据用例中 JVM 的最佳大小。

https://docs.databricks.com/spark/latest/spark-sql/language-manual/optimize.html

相关内容

  • 没有找到相关文章

最新更新