我有一个SQL笔记本来更改数据并插入到另一个表中。
当我尝试更改 blobStorage 中的存储块大小时,我遇到了一种情况,我希望拥有更少和更大的文件。我尝试更改很多参数。
所以我发现了一种行为。
当我运行笔记本时,该命令为每个文件创建近 10MB 的文件。
如果我在数据砖中内部创建表并运行另一个 comand
将external_table创建为
从internal_table中选择 *
这些文件有近 40 MB...
所以我的问题是..
有没有办法修复外部数据砖表中的最小块大小?当我在 SQL 笔记本中转换数据时,我们有最好的实践吗?就像转换所有数据并存储在本地一样,以便之后将数据移动到外部源?
谢谢!
Spark 没有一种直接的方法来控制输出文件的大小。人们使用的一种方法是调用repartition
或coalesce
所需文件的数量。要使用它来控制输出文件的大小,您需要知道要创建多少个文件,例如要创建 10MB 的文件,如果您的输出数据为 100MB,您可以在 write 命令之前调用 repartition(10)
。
听起来您正在使用 Databricks,在这种情况下,您可以将 OPTIMIZE
命令用于增量表。Delta 的 OPTIMIZE
将获取您的底层文件并为您压缩成大约 1GB 的文件,这是大数据用例中 JVM 的最佳大小。
https://docs.databricks.com/spark/latest/spark-sql/language-manual/optimize.html