По замыслу Delta не удаляет файлы сразу, чтобы предотвратить воздействие на активных потребителей. Он также обеспечивает управление версиями (так называемое путешествие во времени), так что вы можете просматривать историю при необходимости. Чтобы удалить предыдущие версии или незафиксированные файлы, вам нужно запустить vacu .
import io.delta.tables._
val deltaTable = DeltaTable.forPath(spark, pathToTable)
deltaTable.vacuum() // use default retention period
С точки зрения вашего вопроса о том, как управлять удержанием и уплотнением для модели бронза / серебро / золото, вам следуетРассматривайте свой посадочный стол (он же бронза) как бревно только для приложений. Это означает, что вам не нужно выполнять уплотнение или переписывать после факта. Бронзовая таблица должна представлять собой запись данных, которые вы приняли из вашего вышестоящего источника данных (например, Kafka) с минимальной обработкой.
Бронзовая таблица обычно используется в качестве дополнительного источника потока для заполнения нижестоящих наборов данных. Учитывая, что чтение из Delta выполняется из журнала транзакций, небольшие файлы не являются такой проблемой по сравнению со стандартными программами чтения файлов, которые выполняют медленные листинги.
Тем не менее, есть еще некоторые варианты для оптимизации файловкогда вы записываете их в бронзовую таблицу: 1) сжимайте ваши сообщения Kafka при записи в Delta, сначала перераспределяя их, чтобы уменьшить количество файлов, 2) увеличивайте интервал триггера, чтобы загрузка выполнялась реже и записывала больше сообщений в большуюфайлы.