Оператор DROP DATABASE Impala используется для удаления базы данных из Impala. Перед удалением базы данных рекомендуется удалить все таблицы из нее.
Синтаксис
Ниже приводится синтаксис оператора DROP DATABASE .
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | CASCADE] [LOCATION hdfs_path];
Здесь IF EXISTS является необязательным предложением. Если мы используем это предложение, когда база данных с указанным именем существует, то она будет удалена. И если нет существующей базы данных с данным именем, то никакая операция не выполняется.
пример
Ниже приведен пример оператора DROP DATABASE . Предположим, у вас есть база данных в Impala с именем sample_database .
И, если вы проверите список баз данных с помощью оператора SHOW DATABASES , вы увидите его имя.
[quickstart.cloudera:21000] > SHOW DATABASES; Query: show DATABASES +-----------------------+ | name | +-----------------------+ | _impala_builtins | | default | | my_db | | sample_database | +-----------------------+ Fetched 4 row(s) in 0.11s
Теперь вы можете удалить эту базу данных с помощью оператора DROP DATABASE, как показано ниже.
< DROP DATABASE IF EXISTS sample_database;
Это удалит указанную базу данных и даст вам следующий вывод.
Query: drop DATABASE IF EXISTS sample_database;
верификация
Вы можете проверить, была ли удалена данная база данных, используя оператор SHOW DATABASES . Здесь вы можете заметить, что база данных с именем sample_database удалена из списка баз данных.
[quickstart.cloudera:21000] > SHOW DATABASES; Query: show DATABASES +----------------------+ | name | +----------------------+ | _impala_builtins | | default | | my_db | +----------------------+ Fetched 3 row(s) in 0.10s [quickstart.cloudera:21000] >
каскадный
В общем, чтобы удалить базу данных, вам нужно удалить все таблицы в ней вручную. Если вы используете каскад, Impala удаляет таблицы в указанной базе данных перед удалением.
пример
Предположим, что в Impala есть база данных с именем sample , и она содержит две таблицы, а именно: student и test . Если вы попытаетесь удалить эту базу данных напрямую, вы получите ошибку, как показано ниже.
[quickstart.cloudera:21000] > DROP database sample; Query: drop database sample ERROR: ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: CAUSED BY: InvalidOperationException: Database sample is not empty. One or more tables exist.
Используя каскад , вы можете удалить эту базу данных напрямую (без удаления ее содержимого вручную), как показано ниже.
[quickstart.cloudera:21000] > DROP database sample cascade; Query: drop database sample cascade
Примечание. Вы не можете удалить « текущую базу данных » в Impala. Поэтому перед удалением базы данных вам необходимо убедиться, что текущий контекст настроен на базу данных, отличную от той, которую вы собираетесь удалить.
Удаление базы данных с использованием браузера Hue
Откройте редактор запросов Impala, введите в нем оператор DELETE DATABASE и нажмите кнопку «Выполнить», как показано ниже. Предположим, есть три базы данных, а именно, my_db, my_database и sample_database вместе с базой данных по умолчанию. Здесь мы удаляем базу данных с именем my_database.
После выполнения запроса аккуратно переместите курсор в верхнюю часть выпадающего меню. Затем вы найдете символ обновления, как показано на скриншоте ниже. Если щелкнуть символ обновления, список баз данных будет обновлен и к нему будут применены последние внесенные изменения.
верификация
Нажмите на раскрывающийся список под заголовком DATABASE в левой части редактора. Там вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать недавно созданную базу данных my_db, как показано ниже.
Если вы внимательно наблюдаете, вы можете видеть только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.