Hive se puede usar para administrar datos estructurados en la parte superior de Hadoop . Los datos se almacenan en forma de tabla dentro de una base de datos. En Hive, el usuario puede crear tablas internas y externas para administrar y almacenar datos en una base de datos. En este artículo, discutiremos la diferencia entre las tablas internas y externas de Hive con una implementación práctica adecuada. Tanto la tabla interna como la externa tienen su propio caso de uso y se pueden usar según el requisito. Por ejemplo, las tablas externas son preferibles a las tablas internas cuando queremos usar los datos compartidos con otras herramientas en Hadoop como apache pig .
Mesa Interna
En general, cada vez que creamos una tabla dentro de una base de datos en Hive, por defecto es una tabla interna también llamada tabla administrada . La razón por la que las tablas internas se administran es que Hive mismo administra los metadatos y los datos disponibles dentro de la tabla. Todas las tablas internas de bases de datos creadas en Hive se almacenan de manera predeterminada en el directorio /user/hive/warehouse en nuestro HDFS . Podemos verificar o anular el centro de almacenamiento predeterminado para la colmena en hive.metastore.warehouse.dir propiedad. Cuando las tablas internas (tablas administradas) se eliminan, todos sus metadatos y los datos de la tabla se eliminan permanentemente de nuestro HDFS y no se pueden recuperar. Las tablas administradas no son de ninguna utilidad cuando existe un requisito para usar datos disponibles fuera de Hive y también utilizados por alguna otra utilidad de Hadoop en nuestro HDFS (Sistema de archivos distribuido de Hadoop) y la tabla externa entró en escena.
Puntos clave para recordar acerca de las tablas internas:
- Hive lleva el archivo de datos que cargamos a la tabla a /database-name/table-name dentro de nuestro almacén
- La tabla interna admite el comando TRUNCATE
- Las tablas internas también tienen soporte ACID
- Las tablas internas también admiten el almacenamiento en caché de resultados de consultas, lo que significa que puede almacenar el resultado de la consulta Hive ya ejecutada para consultas posteriores.
- Los metadatos y los datos de la tabla se eliminarán tan pronto como se elimine la tabla.
Realicemos una pequeña demostración para comprender el concepto de tablas internas en Hive.
Para realizar la siguiente operación, asegúrese de que su colmena esté funcionando. A continuación se muestran los pasos para iniciar una colmena en su sistema local.
Paso 1: Inicie todo su Hadoop Daemon
start-dfs.sh # this will start namenode, datanode and secondary namenode start-yarn.sh # this will start node manager and resource manager jps # To check running daemons
Paso 2: Inicie Hive desde la terminal
hive
Ahora, estamos listos para realizar la demostración rápida.
Paso 1: cree la tabla con una prueba de nombre (la tabla se creará en la base de datos predeterminada de la colmena si no se menciona en ninguna otra base de datos).
CREATE TABLE test( id INT, Name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
La tabla que creamos en la colmena por defecto es una tabla interna o administrada. Con el comando anterior, la tabla interna se crea con éxito.
Paso 2: cargue datos en esta tabla de prueba con el siguiente comando.
LOAD DATA LOCAL INPATH '/home/dikshant/Desktop/data.csv' INTO TABLE test;
Los datos se han cargado correctamente. Cada vez que cargamos cualquier archivo de datos en la tabla de Hive, Hive lleva ese archivo a /nombre-de-la-base-de-datos/nombre-de-la-tabla en el directorio del almacén. Puede ver esto en la imagen a continuación (ya que he creado la prueba de tabla en la base de datos predeterminada, por lo que el nombre de la base de datos no está disponible en la ruta).
Paso 3: veamos si los datos se cargan en la tabla o no
select * from test;
Paso 4: Podemos describir la tabla para ver si es Interna o Externa
describe extended test;
Aquí, en la imagen de arriba, podemos ver todos los metadatos de nuestra tabla. El tipo de tabla se muestra en la parte resaltada.
Paso 5: podemos usar TRUNCATE para eliminar los datos de la tabla de prueba , ya que es compatible con las tablas de Hive internas.
truncate table test;
Ahora, tan pronto como se trunque la tabla de prueba , todos los datos de la tabla se eliminarán de nuestro almacén, ya que Hive tiene la propiedad de las tablas internas. Como hemos truncado la tabla, podemos ver la estructura de la tabla como se muestra a continuación.
show tables;
Paso 6: Elimina la prueba de la tabla (ahora también se eliminarán los metadatos)
drop table test;
Mesa Externa
Las tablas externas son una forma excelente de administrar datos en Hive, ya que Hive no tiene la propiedad de los datos almacenados dentro de las tablas externas. En caso de que el usuario suelte las tablas externas, solo se eliminarán los metadatos de las tablas y los datos estarán seguros. La palabra clave EXTERNAL en la declaración CREATE TABLE se usa para crear tablas externas en Hive. También tenemos que mencionar la ubicación de nuestro HDFS desde donde toma los datos. Todos los casos de uso donde los datos compartibles están disponibles en HDFS para que Hive y otros componentes de Hadoop como Pig también puedan usar los mismos datos Se requieren tablas externas. Hive administra los metadatos de las tablas externas, pero estas tablas toman datos de otras ubicaciones en nuestro HDFS.
Puntos clave para recordar acerca de las tablas externas
- Hive no llevará datos a nuestro almacén
- La tabla externa no admite el comando TRUNCATE
- No hay soporte para la propiedad de transacción ACID
- No es compatible con el almacenamiento en caché de resultados de consultas.
- Solo se eliminarán los metadatos cuando se elimine la tabla externa
Realicemos una pequeña demostración para comprender el concepto de tablas externas en Hive.
Paso 1: Cree un directorio con el nombre /TableData en HDFS
hdfs dfs -mkdir /TableData
Paso 2: ahora copie el archivo de datos que desea usar con la tabla externa de Hive en este directorio (en mi caso, data.csv)
hdfs dfs -put /home/dikshant/Desktop/data.csv /TableData
Paso 3: ahora cree una prueba de tabla externa con la palabra clave EXTERNAL como se muestra a continuación (la tabla se creará en la base de datos predeterminada de la colmena si no se menciona en ninguna otra base de datos)
CREATE EXTERNAL TABLE test( id INT, Name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/TableData';
La tabla test creada con la palabra clave EXTERNAL ahora tomará los datos del directorio que hemos mencionado en el atributo UBICACIÓN.
Paso 4: realicemos la consulta de selección en la prueba de tabla externa que hemos creado
select * from test;
Ahora, en la imagen de arriba, podemos ver claramente que el archivo tiene algunos datos, pero no hemos cargado nada en él, entonces, ¿cómo es esto posible? Es posible porque las tablas EXTERNAS están diseñadas de tal manera que toman datos de la ubicación mencionada. la ubicación es /TableData en nuestro caso y tenemos un archivo data.csv dentro, por lo que la tabla externa de Hive tomará automáticamente los datos de esta ubicación.
Paso 5: dado que los datos están disponibles fuera de nuestro almacén y Hive no tiene propiedad sobre ellos, TRUNCATE no es posible con tablas externas.
truncate table test;
Paso 6: Además, si eliminamos esta tabla externa, solo se eliminarán los metadatos de la tabla, pero no los datos reales almacenados en /TableData en nuestro HDFS.
drop table test;
En la imagen de abajo, podemos ver que /TableData es seguro y no se elimina.
Se trata de tablas internas y externas en Hive.
Publicación traducida automáticamente
Artículo escrito por dikshantmalidev y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA