Каков наилучший способ очистки и воссоздания таблицы данных дельтабрик? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь очистить и воссоздать дельта-таблицу блоков данных для интеграционных тестов.

Я хочу запустить тесты на агенте devops, поэтому я использую JDBC (драйвер Simba), но он говорит, что тип оператора "DELETE" не поддерживается.

Когда я очищаю базовое местоположение DBFS с помощью API-интерфейса DBFS «rm -r», он очищает таблицу, но следующее чтение после повторного создания выдает ошибку - файл, указанный в журнале транзакций, не найден. Это происходит, когда данные были удалены из файловой системы вручную, а не с помощью оператора таблицы DELETE.

Также, если я просто удаляю данные из дельта-таблицы, я все равно вижу основной каталог dbfs и файлы в целости и сохранности. Как изящно очистить дельту, а также нижележащие файлы?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Идеальные шаги заключаются в следующем: Когда вы делаете DROP TABLE и DELETE FROM TABLE TABLE NAME, происходят следующие вещи:

  • DROP TABLE : удаляет вашу таблицу, но данныевсе еще находится. (Также вы не можете создать новое определение таблицы с изменениями в схеме в том же месте.)
  • УДАЛИТЬ ИЗ ТАБЛИЦЫ удаляет данные из таблицы, но журнал транзакций по-прежнему находится.

Итак, Шаг 1 - DROP TABLE schema.Tablename

ШАГ 2 -% fs rm -r /mnt/path/where/your/table/definition/is/pointed/fileNames.parquet

Шаг 3 -% fs ls убедитесь, чтов этом месте нет данных, а также нет журнала транзакций

Шаг 4: СЕЙЧАС> !!!!!RE_RUN ваш CREATE TABLE с любыми изменениями, которые вы хотите UISNG delta location /mnt/path/where/your/table/definition/is/pointed/fileNames.parquet

Шаг 5. Начните использовать таблицу и проверьте с помощью% sql desc formatted schema.Tablename

0 голосов
/ 04 апреля 2019

Вы можете использовать команду VACUUM для очистки. Я еще не использовал его.

Если вы используете spark, вы можете использовать опцию overwriteSchema для перезагрузки данных.

Если бы вы могли предоставить более подробную информацию о том, как вы его используете, было бы лучше

...