Envía transformaciones a BigQuery

En esta página, se describe cómo enviar transformaciones JOIN a BigQuery en lugar de Spark en Cloud Data Fusion.

Para obtener más información, consulta Descripción general del pushdown de transformaciones.

Antes de comenzar

El complemento de transformación está disponible en la versión 6.5.0 y en las posteriores. Si tu canalización se ejecuta en un entorno anterior, puedes actualizar tu instancia a la versión más reciente.

Habilita el pushdown de transformación en tu canalización

Console

  1. Ve a la página Instancias.

    Ir a Instancias

  2. Abre la instancia deseada y ve a la página Lista de canalizaciones en la IU de Cloud Data Fusion.

  3. Selecciona la canalización implementada implementada para abrirla en Pipeline Studio.

  4. Haz clic en Configurar.

  5. Selecciona la pestaña Transformación desplegable.

    Habilitar el menú desplegable de Transformación

  6. Haga clic en Habilitar el menú desplegable Transformación.

  7. Configura el menú desplegable de transformación:

    • BigQuery dataset (obligatorio): Es el nombre del conjunto de datos de BigQuery que se usa para habilitar a etapa las tablas temporales que se usan en la ejecución de BigQuery. Un conjunto de datos se encuentra dentro de un proyecto de cliente. Los conjuntos de datos son contenedores de nivel superior que se usan para organizar y controlar el acceso a las tablas y vistas.

    • Service Account Type (opcional): Selecciona una de las siguientes opciones:

      • File Path: Es la ruta del archivo en la que se encuentra la cuenta de servicio.
      • JSON: Contenido JSON de la cuenta de servicio
    • Ruta de acceso al archivo de la cuenta de servicio (opcional): Es la ruta de acceso en el sistema de archivos local de la clave de la cuenta de servicio que se usa para la autorización. Se puede establecer en auto-detect cuando se ejecuta en un clúster de Dataproc. Cuando se ejecuta en otros clústeres, el archivo debe estar presente en cada nodo del clúster. El predeterminado es auto-detect.

    • JSON de cuenta de servicio (opcional): Contenido del archivo JSON de la cuenta de servicio.

    • ID del proyecto (opcional): El ID del proyecto de Google Cloud, que identifica un proyecto de forma única. Se encuentra en el panel de la consola. Establece de forma predeterminada el proyecto actual en el que se ejecuta la instancia.

    • Nombre del bucket temporal (opcional): El bucket de Google Cloud Storage para almacenar datos temporales. Se crea de forma automática si no existe, pero no se borra de forma automática. Los datos de Cloud Storage se borran después de que se hayan cargado en BigQuery. Si no se proporciona, se crea un bucket único y, luego, se borra después de que finaliza la ejecución de la canalización. La cuenta de servicio debe tener permiso para crear depósitos en el proyecto configurado.

    • Ubicación (opcional): Ingresa el nombre de la ubicación en la que se crea el conjunto de datos de BigQuery. Este valor se ignora si el conjunto de datos o el bucket temporal ya existe. El valor predeterminado es US multi-region.

    • Retención de tablas de BigQuery después de la finalización (opcional): Selecciona para conservar todas las tablas temporales de BigQuery creadas durante la ejecución de la canalización. Esto se puede usar para fines de depuración y validación. El predeterminado es No.

    • TTL de la tabla temporal (en horas) (opcional): Configura el TTL de la tabla para las tablas temporales de BigQuery en cantidad de horas. Esto se usa como un sistema a prueba de fallas en caso de que la canalización se cancele de forma repentina y el proceso de limpieza se interrumpa (por ejemplo, si el clúster de ejecución se cierra de forma repentina). Configurar este valor en 0 inhabilita el TTL de la tabla. El valor predeterminado es 72 (3 días).

    • Job Priority (opcional): Prioridad que se usa para ejecutar trabajos de BigQuery. Selecciona una de las opciones siguientes:

      • Lote: Un trabajo por lotes se pone en cola y se inicia en cuanto los recursos inactivos estén disponibles, lo que, por lo general, toma unos minutos. Si el trabajo no se inicia en un plazo de tres horas, su prioridad se cambia a interactive.

      • Interactivo: Un trabajo interactivo se ejecuta en cuanto sea posible y cuenta para el límite de frecuencia simultánea y diario.

Supervisa los cambios de rendimiento en los registros

Los registros del entorno de ejecución de la canalización incluyen mensajes que muestran las consultas de SQL que se ejecutan en BigQuery. Puedes supervisar qué etapas de la canalización se envían a BigQuery.

En el siguiente registro de ejemplo, se muestran las entradas de registro cuando comienza la ejecución de la canalización. Los registros indican que las uniones en tu canalización se están bajando de BigQuery para su ejecución:

  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'Users' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'Users'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'UserPurchases' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'Purchases'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'UserPurchases'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'MostPopularNames' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'FirstNameCounts'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'MostPopularNames'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@193] - Starting pull for dataset 'MostPopularNames'

En el siguiente ejemplo, se muestran los nombres de las tablas que se asignarán para cada uno de los conjuntos de datos involucrados en la ejecución de pushdown:

  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset Purchases stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserDetails stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset FirstNameCounts stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserProfile stored in table <TABLE_ID>

A medida que la ejecución continúa, los registros muestran la finalización de las etapas de envío y, finalmente, la ejecución de las operaciones de unión. Por ejemplo:

  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@235] - Executing join operation for dataset Users
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@118] - Creating table `<TABLE_ID>` using job: <JOB_ID> with SQL statement: SELECT `UserDetails`.id AS `id` , `UserDetails`.first_name AS `first_name` , `UserDetails`.last_name AS `last_name` , `UserDetails`.email AS `email` , `UserProfile`.phone AS `phone` , `UserProfile`.profession AS `profession` , `UserProfile`.age AS `age` , `UserProfile`.address AS `address` , `UserProfile`.score AS `score` FROM `your_project.your_dataset.<DATASET_ID>` AS `UserProfile` LEFT JOIN `your_project.your_dataset.<DATASET_ID>` AS `UserDetails` ON `UserProfile`.id = `UserDetails`.id
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@151] - Created BigQuery table `<TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@245] - Executed join operation for dataset Users

Cuando se completen todas las etapas, recibirás un mensaje que indica que se completó la operación Pull. Esto indica que se activó el proceso de exportación de BigQuery y que los registros comenzarán a leerse en la canalización después de que comience este trabajo de exportación. Por ejemplo"

DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@196] - Completed pull for dataset 'MostPopularNames'

Si la ejecución de la canalización encuentra algún error, aparecerá en los registros.

Para obtener detalles adicionales sobre la ejecución de las operaciones JOIN de BigQuery (como el uso de recursos, el tiempo de ejecución, las causas de errores, etc.), puedes ver los datos de trabajo de BigQuery con el ID del trabajo que encontrarás. en los registros del trabajo.

¿Qué sigue?