Como obter / gerar a instrução de criação para uma tabela de colmeia existente?


90

Supondo que você já tenha "tabela" no Hive, existe uma maneira rápida, como outros bancos de dados, de conseguir a instrução "CREATE" para essa tabela?

Respostas:


200

A partir do Hive 0.10, este patch-967 implementa SHOW CREATE TABLEque "mostra a CREATE TABLEinstrução que cria uma determinada tabela, ou a CREATE VIEWinstrução que cria uma determinada visualização."

Uso:

SHOW CREATE TABLE myTable;

26

Etapas para gerar Crie ddls de tabela para todas as tabelas no banco de dados Hive e exporte para um arquivo de texto para executar mais tarde:

etapa 1) crie um arquivo .sh com o conteúdo abaixo, digamos 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"

etapa 2) Execute o script de shell acima, passando 'nome do banco de dados' como parâmetro

>bash hive_table_dd.sh <<databasename>>

resultado :

Todas as instruções da tabela de criação de seu banco de dados serão gravadas no HiveTableDDL.txt


1
como podemos ter certeza de que os baldes e o formato de armazenamento serão replicados na nova tabela.
YouAreAwesome

Você também deve anexar um ponto e vírgula após cada instrução para que o script possa ser executado dizendo hive -f HiveTableDDL.txt.
Muton

Este script está falhando para mim com o erro abaixo: Erro ao compilar a instrução: FALHA: A linha ParseException 1:18 não pode reconhecer a entrada perto de '|' '|' no nome da tabela Estou executando este script com o beeline, pois o HDP 3.0 não oferece suporte ao acesso ao hive-shell
Abhinav

@cfeduke este script fornece a localização das tabelas do hive. como pular parte do local para executar esses ddls em outro local de colméia? alterar em mais de 1000 tabelas não é possível
usuário1

2

Descrever formatado / estendido mostrará a definição de dados da tabela na seção

hive> describe Formatted dbname.tablename;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.