Soy nuevo en GCP y Cloud Data Fusion. Veo que puede utilizar este servicio para integrar datos a través de fuentes de datos en un lago de datos.

Tengo varios proveedores de sftp que ofrecen archivos en diferentes formatos estructurados, por ejemplo. csv, json, parquet y avro

En última instancia, me gustaría que estos datos estuvieran disponibles en BQ.

Antes de cargar a BQ mi primera parada iba a ser Google Cloud Storage, de esa forma tengo una copia inmutable de los datos.

El sitio sftp tendrá varios archivos que representan varias tablas.

/root/table_1
/root/table_2
/root/table_3

Primero intento ver si uso una canalización de Cloud Data Fusion para copiar los archivos de SFTP a GCS. Esto ha demostrado ser un desafío.

  1. ¿Puedo usar Fusion para esto?
  2. ¿Necesito proporcionar el esquema para cada archivo o se puede inferir?
  3. ¿Necesito enumerar manualmente todas las tablas? Idealmente, me gustaría copiar todos los archivos como están de SFTP a GCS
  4. Una vez en GCS, me gustaría crear una fuente de datos externa en BigQuery para cada archivo. ¿Es eso posible?
0
Anthony Torres 28 oct. 2020 a las 19:39

1 respuesta

La mejor respuesta

Tenga en cuenta que Cloud Datafusion es una herramienta ETL (Extraer-Transformar-Cargar); en cuyo caso, la canalización manejará los datos en los archivos y no los archivos como tales; por lo tanto, es difícil definir una canalización simple para subir archivos a Storage.

Para resolver esto, pensé en usar Transformación de Javascript para utilizar las bibliotecas cliente; sin embargo, no le permite importar dependencias; por lo tanto, no puede usarlos, por lo que el paso de autenticación de los servicios podría resultar complicado.

De la misma forma, dado que los archivos tienen diferentes formatos, parece que habría que definir una transformación para separar / tratar los archivos en función del tipo de archivo.

Por otro lado, entiendo que su escenario de uso es:

  1. Extraiga archivos de uno o más servidores SFTP
  2. Los archivos tienen diferentes formatos (csv, json, parquet y avro)
  3. Los archivos deben cargarse en Cloud Storage
  4. Cada archivo de Storage está asociado con una tabla de BigQuery como fuente externa.

En base a esto, considero una mejor opción para usar una herramienta de orquestación como Cloud Composer .

Airflow utiliza un DAG (gráfico acíclico dirigido) como una colección de todos las tareas que desea ejecutar, organizadas de manera que reflejen sus relaciones y dependencias; en cuyo caso, su DAG tendría estas tareas:

  1. Utilice sftp_operator para obtener los archivos de los servidores sftp dentro de los trabajadores
  2. Una vez que los archivos están en los trabajadores, puede usar PythonOperator para usar la biblioteca de Cloud Storage para subir los archivos a un cubo en tu proyecto.
  3. Una vez que los archivos están en el almacenamiento, puede usar un PythonOperator para usar la biblioteca de BigQuery o un BashOperator para usar la carga de bq en crea las tablas con cada archivo como fuente externa

Otro beneficio es que ya no necesita preocuparse por el tipo de archivo, ya que todos los formatos que mencionó son admitido actualmente para crear la tabla directamente a partir de ellos.

1
Orlandog 29 oct. 2020 a las 21:45