¿Cómo obtener / generar la declaración de creación para una tabla de colmena existente?

91

Suponiendo que ya tiene "tabla" en Hive, ¿hay una forma rápida como otras bases de datos para poder obtener la instrucción "CREATE" para esa tabla?

Rolando
fuente

Respuestas:

203

A partir de Hive 0.10, este parche 967 implementa SHOW CREATE TABLEque "muestra la CREATE TABLEdeclaración que crea una tabla determinada, o la CREATE VIEWdeclaración que crea una vista determinada".

Uso:

SHOW CREATE TABLE myTable;
Lukas Vermeer
fuente
27

Pasos para generar Create table ddls para todas las tablas en la base de datos de Hive y exportar a un archivo de texto para ejecutarlo más tarde:

paso 1) cree un archivo .sh con el contenido a continuación, 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"

paso 2) Ejecute el script de shell anterior pasando 'db name' como paramanter

>bash hive_table_dd.sh <<databasename>>

salida:

Todas las declaraciones de creación de tablas de su base de datos se escribirán en HiveTableDDL.txt

Aditya
fuente
1
cómo podemos asegurarnos de que los depósitos y el formato de almacenamiento se replicarán en una nueva tabla.
YouAreAwesome
También debe agregar un punto y coma después de cada declaración para que el script pueda ejecutarse diciendo hive -f HiveTableDDL.txt.
Muton
Este script me está fallando con el siguiente error: Error al compilar la declaración: FAILED: ParseException línea 1:18 no puede reconocer la entrada cerca de '|' '|' en el nombre de la tabla, estoy ejecutando este script con beeline ya que HDP 3.0 no es compatible con el acceso de hive-shell
Abhinav
@cfeduke este script proporciona la ubicación de las tablas de colmena. ¿Cómo omitir la parte de ubicación para ejecutar estos ddls en otra ubicación de la colmena? no es posible alterar en más de 1000 mesas
user1
2

Describe Formatted / Extended mostrará la definición de datos de la tabla en colmena

hive> describe Formatted dbname.tablename;
usuario2637464
fuente