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

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


person Rolando    schedule 08.08.2013    source источник


Ответы (3)


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

Использование:

SHOW CREATE TABLE myTable;
person Lukas Vermeer    schedule 09.08.2013

Шаги по созданию DDL таблицы 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)

Запустите указанный выше сценарий оболочки, передав 'db name' в качестве параметра

>bash hive_table_dd.sh <<databasename>>

выход :

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

person Aditya    schedule 03.08.2016
comment
как мы могли убедиться, что сегменты и формат хранения будут реплицированы в новую таблицу. - person Indrajeet Gour; 19.12.2017
comment
Вы также должны добавить точку с запятой после каждого оператора, чтобы сценарий можно было выполнить, сказав hive -f HiveTableDDL.txt. - person Muton; 16.04.2018
comment
Этот сценарий не работает для меня со следующей ошибкой: Ошибка при компиляции оператора: FAILED: строка ParseException 1:18 не может распознать ввод рядом с '|' '|' в имени таблицы я выполняю этот сценарий с помощью beeline, поскольку HDP 3.0 не поддерживает доступ к оболочке улья - person Abhinav; 19.03.2019
comment
@cfeduke этот скрипт указывает расположение таблиц улья. как пропустить часть местоположения, чтобы запустить эти ddls в другом месте улья? изменить более 1000 таблиц невозможно - person user1; 05.06.2020

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

hive> describe Formatted dbname.tablename;
person user2637464    schedule 09.08.2013