我们有以下场景:我们有一个包含约的现有表。 150亿条记录。它没有在创建时明确分区。我们正在用分区创建此表的副本,…
您应该按分区划分数据 date 因为听起来你在时间顺序上不断添加数据。这是分割时间序列数据的普遍接受的方法。这意味着您将每天写入一个日期分区,并且您之前的日期分区不会再次更新(这是一件好事)。
date
如果您的用例受益,您当然可以使用辅助分区密钥(即 PARTITIONED BY (date, entity_id) )
PARTITIONED BY (date, entity_id)
按日期分区将使您必须始终按日期阅读此数据,以获得最佳性能。如果这不是您的用例,那么您必须澄清您的问题。
的 多少个分区? 强>
没有人可以回答您应该使用多少分区,因为每个数据集(和处理集群)都不同。你想要避免的是“数据倾斜”,其中一个工人必须处理大量数据,而其他工人则闲置。在你的情况下,如果一个会发生 clientid 例如,您的数据集占20%。按日期分区必须假设每天的数据量大致相同,因此每个工作人员都保持同样繁忙。
clientid
我不是特别知道Databricks如何写入磁盘,但是在Hadoop上我希望看到每个工作节点都写它自己的文件部分,因此你的写入性能在这个级别上是平行的。