Hive: estructura de tablas particionadas y replicación de datos
Resumen: Hive, Shell
La tabla de replicación de Hive incluye dos tipos
Para tablas no particionadas, si desea copiar completamente una tabla a otra tabla, directamente Simplemente use la instrucción CREATE TABLE ... AS. Por ejemplo, copie dos campos y valores de campo de una tabla a otra tabla de la siguiente manera
Para tablas particionadas, si usa CREATE TABLE. ... instrucción AS, la partición no será válida, pero se puede ejecutar sin errores y los campos y datos se pueden copiar por completo
Hay una tabla particionada arriba, con el campo dt como. partición y CREATE TABLE... AS se usa para la replicación completa de la tabla
Verifique que no haya problemas con la estructura de la tabla y el volumen de datos de la tabla
Verifique la partición e informe un error : Esta tabla no es una tabla particionada, pero el campo de partición original dt existe en la estructura de la tabla. En este momento, la función de partición del campo dt falla, pero los datos se conservan
Para copiar el archivo completo. nombre de la tabla de particiones con particiones, debe usar la instrucción LIKE para copiar la información de la partición. Los pasos específicos son los siguientes
El primer paso es copiar una tabla vacía, que tiene la estructura de la tabla y. información de partición de la tabla original
El siguiente paso es utilizar el comando hdfs para copiar la ruta de almacenamiento de la tabla original en hdfs a la ruta de la nueva tabla Almacenamiento de una tabla. La ruta es un directorio. Y hay subdirectorios en el directorio. Cada subdirectorio representa una partición. En el directorio de la partición se encuentra el archivo de datos en el formato que comienza con part. p>
La declaración de copia utiliza el carácter comodín * para copiar todos los archivos en el directorio de la tabla original a la nueva ruta de la tabla y ver los archivos de datos en la ruta hdfs de la nueva tabla
En Esta vez, aunque la nueva tabla corresponde al almacén de datos. Hay archivos de datos en el directorio, pero los datos aún no se encuentran en el cliente Hive. La tabla vacía se debe a que cada partición de datos no existe en los metadatos de la nueva tabla. Los datos se agregan en unidades de directorios de partición. Actualmente no se puede encontrar la nueva tabla. Si llega a una partición, naturalmente no podrá encontrar los datos.
El siguiente paso es reparar la partición. metadatos de la tabla y use el comando MSCK REPAIR TABLE
Se puede ver en el proceso de ejecución de salida que el comando MSCK REPAIR TABLE se ha verificado primero si la información de partición de la tabla existe en los metadatos. y luego repare la información de la partición inexistente. Después de la reparación, la tabla se puede usar normalmente
La función de MSCK REPAIR TABLE es que solo necesita usar este comando Agregar (reparar) de forma rápida y automática. todas las particiones En Hive, si primero crea una tabla de particiones y copia los datos al directorio HDFS correspondiente como inicialización, debe agregar particiones manualmente antes de poder usarlas. Si hay demasiadas particiones, use ALTER TABLE PARTITION. No ha cambiado mucho. Hagamos una prueba para ver si ALTER TABLE ADD PARTITION también puede completar la copia completa de la tabla de particiones
El siguiente paso es agregar manualmente una partición dt='20201209'
.Se ha verificado que la partición manual se puede completar. MSCK REPAIR TABLE solo escanea automáticamente la información de la partición en el directorio del almacén de datos (dt='20201209' a dt='20210317'). también puede lograr lo siguiente
Se puede lograr el mismo efecto después de ejecutar este script de Shell, pero este script tarda 15 minutos en ejecutarse y requiere un inicio y apagado frecuentes del proceso de Hive