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