Comparación entre Tablas Internas de Hive vs Tablas Externas

¿Quieres saber los diferentes tipos de tablas de Hive y en qué se diferencian unas de otras?

Así como hemos discutido los fundamentos de las tablas de Hive en los modelos de datos de Hive, vamos a explorar ahora la principal diferencia entre las tablas internas y externas de Hive.

En este artículo, vamos a discutir los dos tipos diferentes de tablas de Hive que son la tabla interna (tabla gestionada) y la tabla externa. A continuación, el artículo enumera las diferencias entre las tablas internas de Hive y las tablas externas. También veremos diferentes casos en los que podemos utilizar estas tablas Hive.

Así que, vamos a empezar con las tablas internas de Hive y las tablas externas.

¡Mantente actualizado con las últimas tendencias tecnológicas
Únete a DataFlair en Telegram!

Introducción a las tablas internas y externas de Hive

Tablas internas y externas de Hive

Fundamentalmente, Hive conoce dos tipos diferentes de tablas: La tabla interna y la tabla externa. La tabla Interna también se conoce como tabla gestionada.

Podemos identificar las tablas Internas o Externas utilizando la sentencia DESCRIBE FORMATTED table_name en el Hive, que mostrará MANAGED_TABLE o EXTERNAL_TABLE dependiendo del tipo de tabla.

Tabla Interna de Hive

Hive posee los datos de las tablas internas.

Es la tabla por defecto en Hive. Cuando el usuario crea una tabla en Hive sin especificarla como externa, entonces por defecto, una tabla interna se crea en una ubicación específica en HDFS.

Por defecto, una tabla interna se creará en una ruta de carpeta similar a /usuario/hive/directorio de almacén de HDFS. Podemos anular la ubicación por defecto mediante la propiedad location durante la creación de la tabla.

Si eliminamos la tabla o partición gestionada, los datos de la tabla y los metadatos asociados a esa tabla se borrarán del HDFS.

Tabla externa de Hive

Hive no gestiona los datos de la tabla externa.

Creamos una tabla externa para uso externo como cuando queremos utilizar los datos fuera de Hive.

Las tablas externas se almacenan fuera del directorio del almacén. Pueden acceder a datos almacenados en fuentes como ubicaciones remotas de HDFS o Azure Storage Volumes.

Siempre que eliminamos la tabla externa, entonces sólo se eliminarán los metadatos asociados a la tabla, los datos de la tabla permanecen intactos por Hive.

Podemos crear la tabla externa especificando la palabra clave EXTERNAL en la sentencia Hive create table.

Diferencia entre tabla interna y externa de Hive

Tablas internas y externas de Hive

Veamos ahora la diferencia entre ambas tablas de Hive. Las principales diferencias en las tablas internas y externas de Hive son:

Semántica de carga

La semántica de carga varía en ambas tablas. Veamos la diferencia en la semántica de carga entre la tabla interna y la tabla externa.

a. Tabla interna

Cuando cargamos datos en una tabla interna, entonces Hive mueve los datos en el directorio del almacén.

Por ejemplo:

Aquí en este ejemplo, estamos creando una tabla ‘internaldemo’. Cuando cargamos los datos en la tabla ‘internaldemo’, entonces Hive mueve los datos al directorio del almacén.

Aprende a instalar Apache Hive en Ubuntu para ejecutar consultas Hive.

crear tabla interna - hive tabla interna y externa

Ahora, cargar los datos en la tabla interna creada anteriormente. cargar datos en la tabla interna - hive tablas internas y externas

Al describir la tabla, vemos que los datos de la tabla se mueven al directorio del almacén Hive.describir tabla interna - hive tablas internas y externas

b. Tabla externa

Con la palabra clave EXTERNAL, Hive sabe que no está gestionando los datos de la tabla, por lo que no mueve los datos a su directorio de almacén. Hive ni siquiera comprueba si la ubicación externa en el momento en que se define existe o no.

Por ejemplo:

En este ejemplo, estamos creando una tabla externa, ‘external_demo’ en la ubicación especificada que es ‘/home/dataflair/’. Al cargar los datos en la tabla externa, el Hive no mueve los datos de la tabla a su directorio de almacén.

crear tabla externa - hive tablas internas y externas

Ahora, cargar los datos a la tabla externa creada anteriormente. cargar datos en la tabla externa - hive tablas internas y externas

Al navegar por la tabla, podemos ver que los datos de la tabla Hive no se mueven al directorio del almacén Hive. Se almacena en la ubicación especificada al crear una tabla.describir tabla externa - tablas internas y externas de hive

Semántica de drop

Al igual que la semántica de carga, la semántica de drop también varía en ambas tablas. Veamos la diferencia en la semántica de drop entre la tabla interna y la tabla externa.

a. Tabla interna

Al eliminar la tabla interna se borrarán los datos de la tabla, así como los metadatos asociados a la misma.

Por ejemplo:

En este ejemplo, estamos eliminando la tabla gestionada ‘internaldemo’. Usted puede ver que va a eliminar tanto los metadatos de la tabla, así como los datos de la tabla.

Drop tabla interna - hive tablas internas y externas

Localización de la tabla interna de la colmena - hive tablas internas y externas

Los datos de la tabla también se elimina de la HDFS.

b. Tabla externa

La eliminación de la tabla externa sólo borrará los metadatos de la tabla. El contenido de la tabla permanece intacto.

Por ejemplo:

En este ejemplo, podemos ver que al eliminar la tabla externa ‘external demo’, el contenido de la tabla sigue presente en la ubicación HDFS.

Borrar tabla externa - tablas de la colmena

Localizar tabla externa - tablas de la colmena

Soporte TRUNCATE

El comando TRUNCATE sólo funciona para la tabla interna.

Por ejemplo:

En este ejemplo, estamos intentando utilizar el comando truncar con la tabla ‘externaldemo’. Obtendremos un mensaje de error que dice ‘Cannot truncate non-managed table externaldemo’.

truncate external table - hive tables

ACID Support

ACID/transactional works only for the internal table. No funcionan para la tabla externa.

Caché de resultados de consulta

El caché de resultados de consulta que guarda los resultados de una consulta Hive ejecutada para su reutilización en consultas posteriores sólo funciona para la tabla interna.

Por lo tanto, estas son algunas diferencias entre la tabla interna Hive y la tabla externa.

Veamos ahora cuándo utilizar qué tabla Hive.

¿Cuándo utilizar la tabla interna y externa?

Tabla interna de Hive

Podemos utilizar la tabla interna en los casos:

  • Cuando se generen tablas temporales.
  • Cuando se requiera que Hive gestione el ciclo de vida de la tabla.
  • Y cuando no queramos los datos de la tabla tras su eliminación.

Tabla externa de Hive

Podemos utilizar la tabla externa en los casos:

  • Cuando no estamos creando la tabla basada en la tabla existente.
  • Cuando se requiere utilizar datos fuera de Hive. Por ejemplo, los archivos de datos son leídos y procesados por un programa existente que no bloquea los archivos.
  • Cuando no queremos eliminar los datos de la tabla por completo incluso después de DROP.
  • Cuando los datos no deben ser propios por Hive.

Así que todo esto fue en las tablas internas y externas de Hive. Espero que te guste nuestra explicación.

Conclusión

Después de leer el artículo, podemos concluir que las tablas de Hive son de dos tipos- tabla interna, también conocida como la tabla administrada, y la tabla externa.

Los datos de la tabla interna se gestiona por la Colmena. Hive no es responsable de gestionar los datos de la tabla externa.

Al eliminar la tabla interna de Hive, los datos de la tabla y los metadatos se eliminan y al eliminar la tabla externa de Hive, sólo se eliminan los metadatos de la tabla.

Vea también-

  • Diferentes formas de configurar Hive Metastore
  • Los mejores libros de Apache Hive para aprender Hive para principiantes

¿Tiene alguna duda al trabajar con tablas internas y externas de Hive? Pregunte a continuación.

¡Siga aprendiendo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.