Las transacciones con la semántica de ACID son compatibles con los almacenes de metadatos de Apache Hive en Dataproc Metastore. Para obtener más información, consulta Transacciones de Hive. Estas transacciones están habilitadas de forma predeterminada en Hive 3.
Configuraciones
Debes establecer las configuraciones del servidor y del cliente para habilitar la compatibilidad con transacciones.
Configuraciones del servidor
Las siguientes configuraciones del servidor se establecen de forma predeterminada durante la creación del servicio en Dataproc Metastore. Puedes anular estos valores si reemplazas Key y Value en Anulaciones de configuración del almacén de metadatos.
metastore.compactor.initiator.on
: Indica si se debe ejecutar el subproceso de inicio y limpieza en el servicio de Dataproc Metastore.Se configura como
true
para habilitar el iniciador.metastore.compactor.worker.threads
: Cantidad de subprocesos de trabajador compactador que se ejecutan en Dataproc Metastore.Configúralo en un número positivo para habilitar el compactador. Configurar esta opción en un número mayor puede afectar el rendimiento del servicio, en especial si estás en el nivel del desarrollador. Si es necesario modificar este número, te recomendamos que uses un valor inferior, como 8.
hive.metastore.event.db.notification.api.auth
: Determina si el servicio de Dataproc Metastore debe autorizar las API relacionadas con las notificaciones de la base de datos.Se define en
false
. Si se configura comotrue
, solo los superusuarios en la configuración de proxy tienen permiso. Consulta Seguridad de la API de notificación del almacén de metadatos para obtener más información sobre el privilegio de proxy de superusuario.
Configuraciones del cliente
Las configuraciones del cliente se establecen en el cliente de Hive, como se describe en Valida transacciones.
hive.support.concurrency
: Configurado comotrue
para que admita transacciones de inserción, actualización y eliminación.hive.exec.dynamic.partition.mode
: En modo estricto, debes especificar al menos una partición estática en caso de que todas las particiones se reemplacen accidentalmente. En modo no estricto, todas las particiones pueden ser dinámicas.Configurado como
nonstrict
para que admita transacciones de inserción, actualización y eliminación.hive.txn.manager
: Configurado comoorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager
.
Valida las transacciones
Puedes validar las transacciones de Hive con un clúster de Dataproc que use un servicio de Dataproc Metastore en Hive 3.
Debes crear el clúster de Dataproc en el mismo proyecto que el servicio de Dataproc Metastore y con Hive 3. Las imágenes de Dataproc 2.0, 2.0-ubuntu18 y 2.0-debian10, admiten Hive 3 y transacciones. Puedes usar la marca --image-version
para configurar la imagen 2.0. Por ejemplo:
gcloud dataproc clusters create DATAPROC_CLUSTER_ID \
--dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
--region=REGION \
--image-version 2.0-debian10
En las instrucciones siguientes, se demuestra cómo validar transacciones en tu servicio de Dataproc Metastore que usa un clúster de Dataproc.
Establece una conexión SSH en el clúster de Dataproc. Puedes hacerlo desde un navegador o desde la línea de comandos.
Ejecuta el comando
hive
para abrir el cliente de Hive:$> hive
Establece las configuraciones del lado del cliente a fin de habilitar la compatibilidad con ACID de Hive para las transacciones en la sesión de cliente de Hive.
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; SET hive.support.concurrency=true; SET hive.exec.dynamic.partition.mode=nonstrict;
Crea una tabla transaccional para insertar y actualizar. A continuación, se muestra un ejemplo.
Crea una tabla de transacciones:
create table student (id int, name string, age int) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
Revisa si la tabla es transaccional:
describe formatted <tableName>;
Se imprime una lista de las propiedades de la tabla. Una tabla transaccional tiene
transactional=true
en los parámetros de tabla.Inserta datos en la tabla:
INSERT INTO student VALUES (1, 'Alice', 10), (2, 'Bob', 10), (3, 'Charlie', 10);
- Observa la carpeta delta creada en el directorio
student
del directorio del almacén del servicio. Se crean múltiples carpetas delta si ejecutas varias instrucciones de inserción o actualización.
- Observa la carpeta delta creada en el directorio
Observa qué compactaciones se están ejecutando y sus estados. El almacén de metadatos de Hive ejecuta un subproceso llamado iniciador cada cinco minutos para verificar las tablas que se deben a la compactación y solicita la compactación para esas tablas.
show compactions;
Para iniciar una compactación manual (menor o mayor), haz lo siguiente:
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major';