Метаданные Delta Lake Table

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


person Thelight    schedule 21.07.2020    source источник
comment
Где вы храните стол? Он будет храниться в указанном вами хранилище / файловой системе. Он не будет удален автоматически.   -  person zsxwing    schedule 21.07.2020
comment
@zsxwing Я пытаюсь использовать его в своей локальной среде Windows, и все мои таблицы находятся в папке C: / tmp. Даже если я удалю папку, информация метаданных таблицы будет сохранена.   -  person Thelight    schedule 23.07.2020
comment
Ага. Это ожидаемо. Я предполагаю, что вы используете внешние таблицы (используя location в заявлении create table). Если это так, вам нужно запустить drop table, чтобы удалить таблицу из хранилища метаданных (drop table не удаляет папку, используемую внешней таблицей), а также удалить папку таблицы вручную.   -  person zsxwing    schedule 23.07.2020
comment
@zsxwing Спасибо за ваш комментарий. Да, я использую местоположение в операторе создания таблицы. Один вопрос, где хранится метаинформация таблицы (скажем, в данном случае доступные таблицы), поскольку у меня нет улья в моей локальной оконной среде.   -  person Thelight    schedule 23.07.2020
comment
Если вы не настроите Hive, он будет использовать дерби, который предоставляет функции хранилища метаданных с использованием вашей локальной файловой системы. По умолчанию вы должны видеть каталог spark-warehouse в вашем текущем рабочем каталоге.   -  person zsxwing    schedule 23.07.2020
comment
@zsxwing Большое спасибо .. это проясняет.   -  person Thelight    schedule 23.07.2020
comment
Прохладный. Я завершу вышеупомянутые обсуждения, чтобы ответить.   -  person zsxwing    schedule 24.07.2020


Ответы (1)


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

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

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

person zsxwing    schedule 24.07.2020