¿Alguien puede decirme la diferencia entre la tabla externa y las tablas internas de Hive? Sé que la diferencia surge cuando se cae la mesa. No entiendo lo que quiere decir con los datos y los metadatos se eliminan en las tablas internas y solo los metadatos se eliminan en las tablas externas. ¿Alguien puede explicarme en términos de nodos, por favor?
110
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:
Utilice tablas INTERNAS cuando:
fuente
Para responder a 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 descarta 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:
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:
Utilice tablas INTERNAS cuando:
Fuente :
HDInsight: Introducción a las tablas internas y externas de Hive
Tablas internas y externas en Hadoop- HIVE
fuente
Los datos de una tabla interna se almacenan en la carpeta del almacén, mientras que los datos de una tabla externa se almacenan en la ubicación que mencionó en la creación de la tabla.
Entonces, cuando elimina una tabla interna, elimina el esquema, así como los datos en la carpeta del almacén, pero para una tabla externa, solo perderá el esquema.
Entonces, cuando desee que una tabla externa lo respalde nuevamente después de eliminarla, puede crear una tabla con el mismo esquema nuevamente y apuntar a la ubicación de datos original. Espero que esté claro ahora.
fuente
La única diferencia en el comportamiento (no el uso previsto) basada en mi investigación y pruebas limitadas hasta ahora (usando Hive 1.1.0 -cdh5.12.0) parece ser que cuando se elimina una tabla
(NOTA: Consulte la sección 'Tablas externas y administradas' en https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL que enumera alguna otra diferencia que no entendí por completo)
Creo que Hive elige la ubicación donde necesita crear la tabla en función de la siguiente precedencia de arriba a abajo
Cuando la opción "Ubicación" no se usa durante la "creación de una tabla de colmena", se usa la regla de precedencia anterior. Esto es aplicable tanto para tablas internas como externas. Esto significa que una tabla interna no tiene que residir necesariamente en el directorio Warehouse y puede residir en cualquier otro lugar.
Nota: Es posible que me haya perdido algunos escenarios, pero según mi exploración limitada, el comportamiento de la tabla Interna y Extenal parece ser el mismo, excepto por la única diferencia (eliminación de datos) descrita anteriormente. Probé los siguientes escenarios para tablas internas y externas.
fuente
En las tablas externas, si lo elimina, solo elimina el esquema de la tabla, los datos de la tabla existen en la ubicación física. Entonces, para eliminar los datos, use hadoop fs - rmr tablename. Colmena de tablas administradas tendrá control total sobre las tablas. En las tablas externas los usuarios tendrán control sobre él.
fuente
Las tablas internas son útiles si desea que Hive administre el ciclo de vida completo de sus datos, incluida la eliminación, mientras que las tablas externas son útiles cuando los archivos se utilizan fuera de Hive.
fuente
La tabla de colmena externa tiene la ventaja de que no elimina archivos cuando soltamos tablas, podemos establecer formatos de fila con diferentes configuraciones, como serde .... delimitado
fuente
También tenga en cuenta que Hive es un gran almacén de datos. Cuando desee eliminar una tabla, no querrá perder Gigabytes o Terabytes de datos. Generar, mover y copiar datos a esa escala puede llevar mucho tiempo. Cuando suelta una tabla "Administrada", la colmena también eliminará sus datos. Cuando suelta una tabla 'Externa', solo se elimina la definición de esquema del metaalmacén de Hive. Los datos de los hdfs aún permanecen.
fuente
Considere este escenario que se adapta mejor a la tabla externa:
Un trabajo de MapReduce (MR) filtra un archivo de registro enorme para escupir
n
archivos de registro secundario (por ejemplo, cada archivo de registro secundario contiene un registro de tipo de mensaje específico) y la salida, es decir, losn
archivos de registro secundario se almacenan en hdfs.Estos archivos de registro deben cargarse en las tablas de Hive para realizar más análisis; en este escenario, recomendaría una (s) tabla (s) externa (s), porque los archivos de registro reales son generados y son propiedad de un proceso externo, es decir, un trabajo de MR, además, puede evitar un paso adicional de cargar cada archivo de registro generado en la tabla de Hive respectiva también.
fuente
El mejor caso de uso para una tabla externa en la colmena es cuando desea crear la tabla a partir de un archivo CSV o texto.
fuente
colmena almacena solo los metadatos en la tienda de metadatos y los datos originales en el exterior de la colmena cuando usamos una tabla externa podemos dar la ubicación '' por estos nuestros datos originales no tendrán efecto cuando dejamos caer la tabla
fuente
Cuando ya hay datos en HDFS, se puede crear una tabla de Hive externa para describir los datos. Se llama EXTERNAL porque los datos de la tabla externa se especifican en las propiedades de UBICACIÓN en lugar del directorio de almacén predeterminado.
Al mantener los datos en las tablas internas, Hive administra por completo el ciclo de vida de la tabla y los datos. Esto significa que los datos se eliminan una vez que se elimina la tabla interna. Si se elimina la tabla externa, los metadatos de la tabla se eliminan pero los datos se conservan. La mayoría de las veces, se prefiere una tabla externa para evitar eliminar datos junto con tablas por error.
fuente
Para las tablas administradas, Hive controla el ciclo de vida de sus datos. Hive almacena los datos de las tablas administradas en un subdirectorio en el directorio definido por hive.metastore.warehouse.dir de forma predeterminada.
Cuando eliminamos una tabla administrada, Hive elimina los datos de la tabla, pero las tablas administradas son menos convenientes para compartir con otras herramientas. Por ejemplo, digamos que tenemos datos creados y utilizados principalmente por Pig, pero queremos ejecutar algunas consultas en ellos, pero sin darle a Hive la propiedad de los datos.
En ese momento, se define una tabla externa que apunta a esos datos, pero no se apropia de ellos.
fuente
INTERNO : La tabla se crea primero y los datos se cargan más tarde
EXTERNO : los datos están presentes y la tabla se crea encima de ellos.
fuente
En Hive también podemos crear una tabla externa. Le dice a Hive que haga referencia a los datos que se encuentran en una ubicación existente fuera del directorio del almacén. Eliminar tablas externas eliminará los metadatos, pero no los datos.
fuente
Me gustaria agregar eso
fuente
En palabras simples, hay dos cosas:
Hive puede administrar cosas en el almacén, es decir, no eliminará los datos del almacén. Cuando eliminamos la tabla:
1) Para las tablas internas, los datos se gestionan internamente en el almacén. Entonces será eliminado.
2) Para tablas externas, los datos se gestionan eternamente desde el almacén. Por lo tanto, no se puede eliminar y los clientes que no sean Hive también pueden usarlo.
fuente