Могу ли я заставить flu sh таблицу дельты Databricks, чтобы на копии диска были последние / непротиворечивые данные? - PullRequest
1 голос
/ 27 января 2020

Я обращаюсь к дельта-таблицам Databricks из Azure фабрики данных, у которой нет собственного соединителя с таблицами Databricks. Поэтому в качестве обходного пути я создаю таблицы с ключевым словом LOCATION, чтобы хранить их в Azure Data Lake. Затем, поскольку я знаю местоположение файла таблицы, я просто читаю основные файлы Parquet из фабрики данных. Это прекрасно работает.

Но ... что если в журнале транзакций Delta есть кэшированная информация, которая еще не была записана на диск? Скажем, приложение обновило строку в таблице, а диск еще не отражает этот факт. Тогда мое чтение из фабрики данных будет неправильным.

Итак, два вопроса ...

  • Может ли это случиться? Сохраняются ли изменения в журнале до записи?
  • Могу ли я принудительно вызвать журнал транзакций flu sh, чтобы я знал, что копия диска обновлена?

1 Ответ

0 голосов
/ 27 января 2020

По этой теме задавались аналогичные вопросы c (см., Например, здесь ).

Для дельта-таблиц вам нужна поддержка дельта-озера (так как журнал дельты захватывает настоящая правда). Таким образом, на данный момент вы должны использовать действие Databricks для дальнейшей обработки с помощью Azure фабрики данных для дельта-таблиц (вы также можете реплицировать наборы данных в паркет, чтобы сделать данные пригодными для использования другими службами, не поддерживающими delta-lake). Теоретически вы можете сделать Вакуум с периодом хранения 0, но это не рекомендуется и может привести к несогласованности данных.

Согласно форуму обратной связи Azure в будущем планируется поддержка по этому вопросу.

...