Метаданные таблицы дельты озера

#delta-lake

Вопрос:

Где Delta Lake хранит информацию о метаданных таблицы. Я использую spark 2.6(не базы данных) на своей автономной машине. Мое предположение состояло в том, что если я перезапущу spark, таблица, созданная в delta lake spark, будет удалена(попытка из записной книжки Jupyter). Но это не так.

Комментарии:

1. Где находится место, где вы храните таблицу? Он будет сохранен в указанной вами файловой системе хранения. Он не будет удален автоматически.

2. @zsxwing Я пытаюсь сделать это в своей локальной среде Windows, и все мои таблицы находятся под C:/tmp. Даже если я удалю папку, информация о метаданных таблицы будет сохранена

3. Ага. Это ожидаемо. Я предполагаю, что вы используете внешние таблицы (используя location в create table заявлении). Если это так, вам нужно запустить drop table , чтобы удалить таблицу из метастора ( drop table не удаляет папку, используемую внешней таблицей), а также удалить папку таблицы вручную.

4. @zsxwing Спасибо за ваш комментарий. Да, я использую «местоположение» в инструкции create table. Один вопрос, где хранится метаданная таблицы(скажем, в этом случае доступные таблицы), так как у меня нет hive в моей локальной среде окон.

5. Если вы не настроите Hive, он будет использовать derby, который предоставляет функции хранилища метастазов с помощью вашей локальной файловой системы. По умолчанию вы должны иметь возможность видеть каталог spark-warehouse в текущем рабочем каталоге.

Ответ №1:

В Apache Spark есть два типа таблиц: внешние таблицы и управляемые таблицы. При создании таблицы с использованием LOCATION ключевого слова в CREATE TABLE инструкции это внешняя таблица. В противном случае это управляемая таблица, и ее местоположение находится в каталоге, указанном в Spark SQL conf spark.sql.warehouse.dir . Его значением по умолчанию является spark-warehouse каталог в текущем рабочем каталоге

Помимо данных, Spark также необходимо хранить метаданные таблицы в метасторе Hive, чтобы Spark мог знать, где находятся данные, когда пользователь использует имя таблицы для запроса. Хранилище метастазов улья обычно представляет собой базу данных. Если пользователь не укажет базу данных для метастора Hive, Spark будет использовать встроенную базу данных под названием Derby для хранения метаданных таблицы в локальной файловой системе.

DROP TABLE команда ведет себя по-разному в зависимости от типа таблицы. Если таблица является управляемой таблицей, DROP TABLE она удалит таблицу из метастора Hive и удалит данные. Если таблица является внешней таблицей, DROP TABLE она удалит таблицу из хранилища метастазов Hive, но сохранит данные в файловой системе. Следовательно, файлы данных внешней таблицы должны быть удалены пользователем из файловой системы вручную.