Solución:
Hive tiene una base de datos relacional en el nodo principal que utiliza para realizar un seguimiento del estado. Por ejemplo, cuando CREATE TABLE FOO(foo string) LOCATION 'hdfs://tmp/';
, este esquema de tabla se almacena en la base de datos.
Si tiene una tabla particionada, las particiones se almacenan en la base de datos (esto le permite a Hive usar listas de particiones sin ir al sistema de archivos y encontrarlas, etc.). Este tipo de cosas son los ‘metadatos’.
Cuando suelta una tabla interna, descarta los datos y también los metadatos.
Cuando suelta una tabla externa, solo descarta los metadatos. Eso significa que Hive ahora ignora esos datos. No toca los datos en sí.
Las tablas de Hive se pueden crear como EXTERNAS o INTERNAS. Esta es una elección que afecta la forma en que se cargan, controlan y administran los datos.
Utilice tablas EXTERNAS cuando:
- Los datos también se utilizan fuera de Hive. Por ejemplo, los archivos de datos son leídos y procesados por un programa existente que no bloquea los archivos.
- Los datos deben permanecer en la ubicación subyacente incluso después de una DROP TABLE. Esto puede aplicarse si apunta varios esquemas (tablas o vistas) a un solo conjunto de datos o si está iterando a través de varios esquemas posibles.
- Desea utilizar una ubicación personalizada como ASV.
- Hive no debe poseer datos y configuraciones de control, directorios, etc., tiene otro programa o proceso que hará esas cosas.
- No está creando una tabla basada en una tabla existente (COMO SELECCIONAR).
Utilice tablas INTERNAS cuando:
Los datos son temporales.
Desea que Hive administre por completo el ciclo de vida de la tabla y los datos.
Para responder su pregunta:
Para las tablas externas, Hive almacena los datos en la UBICACIÓN especificada durante la creación de la tabla (generalmente no en el directorio del almacén). Si se elimina la tabla externa, se eliminan los metadatos de la tabla, pero no los datos.
Para las tablas internas, Hive almacena datos en su directorio de almacén. Si se elimina la tabla, se eliminarán tanto los metadatos como los datos de la tabla.
Para tu referencia,
Diferencia entre tablas internas y externas:
Para mesas externas –
La tabla externa almacena archivos en el servidor HDFS, pero las tablas no están vinculadas al archivo de origen por completo.
Si elimina una tabla externa, el archivo aún permanece en el servidor HDFS.
Como ejemplo, si crea un mesa externa llamado “Table_test” en HIVE usando HIVE-QL y vincule la tabla al archivo “expediente”, luego, eliminar “table_test” de HIVE no eliminará “file” de HDFS.
Los archivos de tablas externos son accesibles para cualquier persona que tenga acceso a la estructura de archivos HDFS y, por lo tanto, la seguridad debe administrarse a nivel de archivo / carpeta HDFS.
Los metadatos se mantienen en el nodo principal y, al eliminar una tabla externa de HIVE, solo se eliminan los metadatos, no los datos / archivos.
Para tablas internas
- Almacenado en un directorio basado en la configuración de
hive.metastore.warehouse.dir
,
por defecto, las tablas internas se almacenan en el siguiente directorio “/ Usuario / colmena / almacén” puede cambiarlo actualizando la ubicación en el archivo de configuración.- Al eliminar la tabla, se eliminan los metadatos y los datos del nodo principal y HDFS, respectivamente.
- La seguridad del archivo de tabla interno se controla únicamente a través de HIVE. La seguridad debe gestionarse dentro de HIVE, probablemente a nivel de esquema (depende de la organización).
Hive puede tener tablas internas o externas, esta es una opción que afecta la forma en que se cargan, controlan y administran los datos.
Utilice tablas EXTERNAS cuando:
- los los datos también se utilizan fuera de Hive. Por ejemplo, los archivos de datos son leídos y procesados por un programa existente que no bloquea los archivos.
- Los datos deben permanecer en la ubicación subyacente incluso después de una DROP TABLE. Esto puede aplicarse si está apuntando varios esquemas (tablas o vistas) a un solo conjunto de datos o si está iterando a través de varios esquemas posibles.
- Hive no debe poseer datos y controlar configuraciones, directorios, etc.., es posible que tenga otro programa o proceso que haga esas cosas.
- No está creando una tabla basada en una tabla existente (COMO SELECCIONAR).
Utilice tablas INTERNAS cuando:
- los los datos son temporales.
- Quieres Hive para administrar completamente el ciclo de vida de la tabla y los datos.
Fuente :
HDInsight: Introducción a las tablas internas y externas de Hive
Tablas internas y externas en Hadoop- HIVE