Uso de Kettle para migrar datos de BigQuery a un clúster de DWS
Esta práctica demuestra cómo usar la herramienta de código abierto Kettle para migrar datos de BigQuery a DWS. La sintaxis de los metadatos se convierte mediante DSC antes de la migración. Los datos históricos e incrementales se migran mediante Kettle.
Para obtener más información sobre Kettle, consulte Descripción de Kettle.
Esta práctica dura unos 90 minutos. Por ejemplo, la migración de BigQuery implica las siguientes operaciones:
- Requisitos previos: Prepare la herramienta de migración Kettle y los paquetes de suite relacionados, y obtenga el archivo JSON key de BigQuery.
- Paso 1: Configurar la conexión entre BigQuery y DWS: Use Kettle para crear dos conexiones de base de datos para conectar BigQuery y DWS.
- Paso 2: Migrar metadatos: Use DSC para migrar datos.
- Paso 3: Migrar todos los datos del servicio: Migre todos los datos históricos.
- Paso 4: Migrar datos de servicio incrementales: Migre los datos incrementales.
- Paso 5: Ejecutar tareas de migración de forma simultánea: Cree un trabajo para ejecutar simultáneamente tareas de transformación para la migración simultánea de tablas.
- Paso 6: Verificar datos de tabla: Verifique la consistencia de los datos después de la migración.
Notas y restricciones
- No se admite la migración de toda la base de datos.
- Es posible migrar una sola tabla, pero si necesita migrar varias tablas a la vez, debe crear varias transformaciones dentro de un solo trabajo.
Requisitos previos
Se ha instalado JDK 11 o una versión posterior y se han configurado las variables de entorno relacionadas.
Verificaciones previas a la migración
- Instale Kettle y configure dws-client. Para obtener más información, consulte Uso de Kettle para importar datos.
- Después de instalar y configurar Kettle, vaya al directorio data-integration\lib de la carpeta Kettle y elimine el archivo guava-17.0 para conectarse a BigQuery.

- Obtenga el archivo JSON key de Google Cloud y configure Kettle. Las siguientes operaciones son solo para referencia. Para obtener más información, visite el sitio web oficial de Google Cloud.
- Inicie sesión en Google Cloud y seleccione IAM en la lista desplegable de productos.
- En el panel de navegación, seleccione Service Accounts. En la lista de cuentas de servicio, seleccione una cuenta de servicio, haga clic en
a la derecha y seleccione Manage keys. Si no hay ninguna cuenta de servicio disponible, cree una. - Seleccione Create new key > JSON, haga clic en Create, guarde la clave localmente y copie la ruta de almacenamiento local.
Paso 1: Configurar la conexión entre BigQuery y DWS
- Abra la carpeta data-integration extraída de la carpeta Kettle y haga doble clic en Spoon.bat para iniciar Kettle.
Si no se puede ejecutar, verifique si la versión de JDK es 11 o posterior.
- Seleccione File > New > Transformation.

- Seleccione View y haga doble clic en Database connections.

- En el cuadro de diálogo Database Connection que se muestra, seleccione General en la lista desplegable de la izquierda e ingrese la siguiente información en secuencia.
- Connection name: Ingrese Bigquery.
- Connection type: Seleccione Google BigQuery.
- Access: Seleccione Native(JDBC).
- Host Name: Ingrese https://www.googleapis.com/bigquery/v2.
- Project ID: Ingrese el ID del proyecto obtenido de JSON key generado en 3.
- Port Number: Ingrese 443.

- En el panel izquierdo, haga clic en Options y agregue la siguiente información en secuencia:
- OAuthServiceAcctEmail: Ingrese la dirección de correo electrónico de la clave JSON generada por la cuenta de servicio en el proyecto correspondiente en Google Cloud IAM.
- OAuthPvtKeyPath: Ingrese la ruta local para almacenar la clave JSON.
- OAuthType: Ingrese 0.

- Haga clic en Test.
- Una vez establecida la conexión, haga clic en OK.
Es posible que la conexión falle porque el cliente no puede encontrar el paquete JAR. En este caso, debe visitar el sitio web oficial, descargar y descomprimir el paquete de controladores JDBC más reciente, guardarlo en la carpeta data-integration\lib, eliminar el archivo guava-17.0, reiniciar el cliente y conectarse a la base de datos de nuevo.

- Haga clic con el botón derecho en Database connections en Transformation xx, haga clic en New y configure la conexión de la base de datos de destino.
- A la izquierda, seleccione General y configure los siguientes parámetros:
- Connection name: Ingrese DWS.
- Connection type: Seleccione PostgreSQL.
- Access: Seleccione Native(JDBC).
- Host Name: Ingrese la dirección IP de DWS. por ejemplo, 10.140.xx.xx.
- Database Name: Ingrese gaussdb.
- Port Number: Ingrese 8000.
- Username: Ingrese dbadmin.
- Password: Ingrese la contraseña del usuario dbadmin de DWS.

- A la izquierda, haga clic en Options y agregue los siguientes parámetros.
stringtype: Configúrelo como unspecified.

- Confirme los parámetros y haga clic en Test. Una vez establecida la conexión, haga clic en OK.
- Haga doble clic en el nombre de Transformation xx, cambie a la pestaña Monitoring y configure Step performance measurement interval (ms) como 1000 para optimizar el rendimiento del procesamiento de Kettle.

Paso 2: Migrar metadatos
Utilice la herramienta DSC desarrollada por Huawei para convertir los DDL de los metadatos exportados de BigQuery para que sean comunes con las sentencias SQL en DWS.
- Exporte metadatos y metadatos incrementales.
- Obtenga información de la tabla.
1SELECT * FROM Information_schema.tables
- Obtenga los DDL de las tablas.
1SELECT ddl FROM `project.dataset.INFORMATION_SCHEMA.TABLES` WHERE table_name = 'your_table_name'
Exporte los resultados de la consulta.
- Consulte las tablas más recientes si los metadatos cambian.
1SELECT * FROM Information_schema.tables ORDER BY last_modified_time DESC;
Exporte metadatos como se describe en 1.b, compare los metadatos con los de DWS, convierta los metadatos mediante DSC, elimine las tablas existentes, ejecute los nuevos DDL y migre las tablas completas.
- Obtenga información de la tabla.
- Configure la herramienta DSC. Para obtener más información, consulte Configuración de DSC.
- Utilice DSC para convertir los DDL.
- Coloque el archivo SQL que se va a convertir en la carpeta input de la herramienta DSC.
- Abra la ventana cmd y vaya al directorio DSC.
- Ejecute el script runDSC (runDSC.sh en el entorno Linux).
runDSC.bat -S mysql

- Vea los resultados y los registros de la conversión en el directorio output de la herramienta DSC.
DDL antes de la conversión:

DDL después de la conversión:

- Conéctese a la base de datos DWS y ejecute los DDL convertidos para crear la tabla de destino.
Paso 3: Migrar todos los datos del servicio
- En el panel izquierdo de Kettle, seleccione Design > Input > Table input.
- Haga doble clic en Table input, establezca Connection en el nombre de conexión de BigQuery configurado en Paso 1: Configurar la conexión entre BigQuery y DWS e ingrese las sentencias SQL de consulta en el cuadro de edición SQL.

- Haga clic en OK. Se crea la información de entrada de la tabla.
- En el panel izquierdo, seleccione Design > Output > Table output.
- Haga doble clic en Table output e ingrese la siguiente información.
- Connection: Seleccione el nombre de conexión de DWS configurado en Paso 1: Configurar la conexión entre BigQuery y DWS.
- Target schema: Ingrese el esquema correspondiente.
- Target table: Ingrese el nombre de la tabla correspondiente.
- Truncate table: Seleccione esta opción si una tabla se migra por completo varias veces. De lo contrario, ignórela.

- Haga clic en OK. La información de salida de la tabla se creó correctamente.
- En el panel derecho, mueva el puntero a Table input y arrastre la flecha a Table output.

- Haga clic en
para ejecutar el trabajo. 
Paso 4: Migrar datos de servicio incrementales
Los pasos para la migración incremental son similares a los de la migración completa. La diferencia es que se agregan condiciones WHERE a las sentencias SQL de origen.
- Configure BigQuery. En el panel derecho, haga clic con el botón derecho en Table input, seleccione la conexión de la base de datos de origen y agregue condiciones WHERE a las sentencias SQL para consultar datos incrementales.
Este método funciona para tablas con campos específicos de tiempo. Para tablas sin campos específicos de tiempo, pero con particiones, importe los datos por partición. Para tablas sin particiones, elimine todos los datos e importe todo.
Figura 1 Configuración de información para Table input
- Configure la base de datos de destino. Haga clic con el botón derecho en Table output y edítelo. Figura 2 Configuración de información para Table output
- Haga clic en
para ejecutar la tarea de migración.
Paso 5: Ejecutar tareas de migración de forma simultánea
La configuración de tareas de trabajo combina la transformación de múltiples tablas en una sola tarea para una ejecución más rápida.
- Seleccione File > New > Job. Arrastre los componentes de destino al panel y conéctelos mediante líneas. Figura 3 Creación de un trabajo
- Haga doble clic en Transformation y seleccione la tarea de transformación que se ha configurado y guardado. Figura 4 Configuración de una transformación
- Haga clic con el botón derecho en el componente Start, seleccione el componente Run Next Entries in Parallel y configure la ejecución de tareas simultáneas. Figura 5 Configuración de simultaneidad
Después de la configuración, aparecerá una doble barra entre los componentes Start y Transformation.
Figura 6 Configuración de simultaneidad exitosa
- Haga clic en Run para ejecutar las tareas de conversión de forma simultánea. Figura 7 Ejecución de las tareas de conversión de forma simultánea
Paso 6: Verificar datos de tabla
Después de la migración, verifique si los datos de las bases de datos de origen y destino son consistentes mediante DataCheck.
- Cree un ECS (con Linux o Windows) y vincule una EIP al ECS para acceder a BigQuery.
- Cargue el paquete de software en el directorio especificado (definido por el usuario) en el ECS, descomprima el paquete DataCheck-*.zip y vaya al directorio DataCheck-*. Para ver cómo usar los archivos del directorio, consulte Tabla 1.
- Configure el paquete de herramientas.
- En Windows: Abra el archivo dbinfo.properties en la carpeta DataCheck/conf y configúrelo según sea necesario.
Puede utilizar el comando siguiente en la herramienta para generar el texto cifrado de src.passwd y dws.passwd.
encryption.bat password

Después de ejecutar el comando, se genera un archivo cifrado en el directorio local bin.

- En Linux:
Descomprima el paquete DataCheck y vaya al directorio donde se almacena el archivo properties.
cd /DataCheck/conf cat dbinfo.properties
Configure el archivo properties de la siguiente manera:

El método de generación del texto cifrado es similar al de Windows. El comando es sh encryption.sh Password.

- En Windows:
- Verifique los datos.
En Windows:
- Abra el archivo check_input.xlsx, ingrese los esquemas, la tabla de origen y la tabla de destino que se van a verificar, y complete Row Range con una sentencia de consulta de datos para especificar el alcance de la consulta.
- El Check Strategy ofrece tres niveles: high, middle y low. Si no se especifica, el valor predeterminado es low.
- El Check Mode admite statistics (verificaciones de valores estadísticos).
La siguiente figura muestra el archivo check_input.xlsx para la comparación de metadatos.
Figura 8 check_input.xlsx
- Ejecute el comando datacheck.bat en el directorio bin para ejecutar la herramienta de verificación.

- Vea el archivo de resultados de la verificación generado check_input_result.xlsx.
Análisis de resultados de la verificación:
- Si Status es No Pass, la verificación falla.
- La columna Check Result Diff muestra que los valores de avg en la verificación de valores son diferentes. El valor de avg de DWS es 61.5125 y el de la base de datos de origen es 61.5000.
- El comando de verificación específico se muestra en Check SQL.
En Linux:
- Edite y cargue el archivo check_input.xlsx. Consulte el paso 1 para Windows.
- Ejecute el comando sh datacheck.sh para ejecutar la herramienta de verificación.

- Vea el resultado de la verificación en el archivo check_input_result.xlsx. (El análisis del resultado de la verificación es el mismo que para Windows).
- Abra el archivo check_input.xlsx, ingrese los esquemas, la tabla de origen y la tabla de destino que se van a verificar, y complete Row Range con una sentencia de consulta de datos para especificar el alcance de la consulta.
