如何在外部databricks表中固定块大小?

ddhy6vgd  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(438)

我有一个sql笔记本来更改数据并插入到另一个表中。
我有一种情况,当我试图改变blobstorage中存储的块大小时,我希望有越来越大的文件。我试着改变很多参数。
所以我发现了一种行为。
当我运行notebook时,命令会为每个文件创建大约10mb的文件。
如果我在databricks中内部创建表并运行另一个命令
将外部表创建为
从内部表格中选择*
这些文件有将近40 mb。。。
所以我的问题是。。
有没有一种方法可以固定外部databricks表中的最小块大小?当我在sql笔记本中转换数据时,我们有最好的实践吗?比如转换所有数据并在本地存储,然后将数据移到外部源?
谢谢!

7ajki6be

7ajki6be1#

spark没有一种简单的方法来控制输出文件的大小。人们使用的一种方法是调用 repartition 或者 coalesce 所需文件的数量。要使用它来控制输出文件的大小,您需要知道要创建多少文件,例如,要创建10mb文件,如果您的输出数据是100mb,您可以调用 repartition(10) 在写入命令之前。
听起来您正在使用databricks,在这种情况下,您可以使用 OPTIMIZE 增量表的命令。三角洲 OPTIMIZE 它将把底层文件压缩成大约1gb的文件,这是jvm在大数据用例中的最佳大小。
https://docs.databricks.com/spark/latest/spark-sql/language-manual/optimize.html

相关问题