Как получить / сгенерировать оператор создания для существующей таблицы улья?


91

Предполагая, что у вас уже есть «таблица» в Hive, есть ли быстрый способ, как и другие базы данных, получить оператор «CREATE» для этой таблицы?

Ответы:


203

Начиная с Hive 0.10, этот патч-967 реализует, SHOW CREATE TABLEкоторый «показывает CREATE TABLEоператор, который создает данную таблицу, или CREATE VIEWоператор, который создает данное представление».

Применение:

SHOW CREATE TABLE myTable;

27

Шаги по созданию ddls-файла Create table для всех таблиц в базе данных Hive и экспорта в текстовый файл для последующего запуска:

шаг 1) создайте файл .sh с указанным ниже содержимым, скажем, hive_table_ddl.sh

#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt  
wait
cat tableNames.txt |while read LINE
   do
   hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
   echo  -e "\n" >> HiveTableDDL.txt
   done
rm -f tableNames.txt
echo "Table DDL generated"

Шаг 2) Запустите указанный выше сценарий оболочки, передав 'имя базы данных' в качестве параметра

>bash hive_table_dd.sh <<databasename>>

выход :

Все операторы создания таблиц вашей БД будут записаны в HiveTableDDL.txt.


1
как мы могли убедиться, что сегменты и формат хранения будут реплицированы в новую таблицу.
YouAreAwesome

Вы также должны добавить точку с запятой после каждого оператора, чтобы сценарий можно было выполнить, сказав hive -f HiveTableDDL.txt.
Muton

Этот сценарий не работает для меня со следующей ошибкой: Ошибка при компиляции оператора: FAILED: строка ParseException 1:18 не может распознать ввод рядом с '|' '|' в имени таблицы Я выполняю этот сценарий с помощью beeline, поскольку HDP 3.0 не поддерживает доступ к оболочке улья
Абхинав,

@cfeduke этот скрипт указывает расположение таблиц улья. как пропустить часть местоположения, чтобы запустить эти ddls в другом месте улья? изменить более 1000 таблиц невозможно
user1

2

Describe Formatted / Extended покажет определение данных таблицы в кусте

hive> describe Formatted dbname.tablename;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.