El complemento de fuente por lotes de Cloud Storage te permite leer datos de buckets de Cloud Storage y llevarlos a Cloud Data Fusion para su posterior procesamiento y transformación. Te permite cargar datos de varios formatos de archivo, incluidos los siguientes:
- Estructurados: CSV, Avro, Parquet y ORC
- Semiestructurado: JSON, XML
- Otros: Texto, binario
Antes de comenzar
Por lo general, Cloud Data Fusion tiene dos cuentas de servicio:
- Cuenta de servicio en tiempo de diseño: Agente de servicio de la API de Cloud Data Fusion
- Cuenta de servicio en tiempo de ejecución: Cuenta de servicio de Compute Engine
Antes de usar el complemento de fuente por lotes de Cloud Storage, otorga el siguiente rol o permisos a cada cuenta de servicio.
Agente de servicios de la API de Cloud Data Fusion
Esta cuenta de servicio ya tiene todos los permisos necesarios, por lo que no es necesario que agregues permisos adicionales.
Cuenta de servicio de Compute Engine
En tu proyecto Google Cloud , otorga los siguientes roles o permisos de IAM a la cuenta de servicio de Compute Engine:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader): Este rol predefinido contiene el permisostorage.buckets.getrequerido. Visualizador de objetos de almacenamiento (
roles/storage.legacyBucketReader). Este rol predefinido contiene los siguientes permisos obligatorios:storage.objects.getstorage.objects.list
Cómo configurar el complemento
- Ve a la interfaz web de Cloud Data Fusion y haz clic en Studio.
- Verifica que esté seleccionada la opción Data Pipeline - Batch (no Realtime).
- En el menú Source, haz clic en GCS. El nodo de Cloud Storage aparecerá en tu canalización.
- Para configurar la fuente, ve al nodo de Cloud Storage y haz clic en Properties.
Ingresa las siguientes propiedades. Para obtener una lista completa, consulta Propiedades.
- Ingresa una etiqueta para el nodo de Cloud Storage, por ejemplo,
Cloud Storage tables. Ingresa los detalles de la conexión. Puedes configurar una conexión nueva y única, o una conexión existente y reutilizable.
Nueva conexión
Para agregar una conexión única a Cloud Storage, sigue estos pasos:
- Mantén desactivada la opción Usar conexión.
- En el campo ID del proyecto, deja el valor como detección automática.
En el campo Tipo de cuenta de servicio, deja el valor como Ruta de acceso al archivo y la Ruta de acceso al archivo de la cuenta de servicio como detección automática.
Conexión reutilizable
Para reutilizar una conexión existente, sigue estos pasos:
- Activa Use connection.
- Haz clic en Browse connections.
Haz clic en el nombre de la conexión, por ejemplo, Cloud Storage Default.
Opcional: Si no existe una conexión y deseas crear una nueva conexión reutilizable, haz clic en Agregar conexión y consulta los pasos de la pestaña Nueva conexión en esta página.
En el campo Nombre de referencia, ingresa un nombre para usar en el linaje, por ejemplo,
data-fusion-gcs-campaign.En el campo Ruta de acceso, ingresa la ruta de acceso desde la que se leerá, por ejemplo,
gs://BUCKET_PATH.En el campo Formato, selecciona uno de los siguientes formatos de archivo para los datos que se leen:
- avro
- blob (el formato blob requiere un esquema que contenga un campo llamado body de tipo bytes)
- csv
- delimitado
- json
- parquet
- text (el formato de texto requiere un esquema que contenga un campo llamado body de tipo string)
- tsv
- El nombre de cualquier complemento de formato que hayas implementado en tu entorno
Opcional: Para probar la conectividad, haz clic en Obtener esquema.
Opcional: En el campo Tamaño de la muestra, ingresa la cantidad máxima de filas que se deben verificar para el tipo de datos seleccionado, por ejemplo,
1000.Opcional: En el campo Anular, ingresa los nombres de las columnas y sus respectivos tipos de datos para omitir.
Opcional: Ingresa Propiedades avanzadas, como un tamaño de división mínimo o un filtro de ruta de expresión regular (consulta Propiedades).
Opcional: En el campo Nombre del bucket temporal, ingresa un nombre para el bucket de Cloud Storage.
- Ingresa una etiqueta para el nodo de Cloud Storage, por ejemplo,
Opcional: Haz clic en Validar y corrige los errores que se encuentren.
Haz clic en Cerrar. Las propiedades se guardan y puedes seguir creando tu canalización de datos en Cloud Data Fusion Studio.
Propiedades
| Propiedad | Macro habilitada | Propiedad obligatoria | Descripción |
|---|---|---|---|
| Etiqueta | No | Sí | Es el nombre del nodo en tu canalización de datos. |
| Usar conexión | No | No | Busca una conexión reutilizable a la fuente. Para obtener más información sobre cómo agregar, importar y editar las conexiones que aparecen cuando exploras conexiones, consulta Administra conexiones. |
| Conexión | Sí | Sí | Si la opción Usar conexión está activada, el nombre de la conexión reutilizable que selecciones aparecerá en este campo. |
| ID del proyecto | Sí | No | Se usa solo cuando la opción Usar conexión está desactivada. Es un identificador único a nivel global del proyecto. El valor predeterminado es auto-detect. |
| Tipo de cuenta de servicio | Sí | No | Selecciona una de las siguientes opciones:
|
| Ruta de acceso al archivo de la cuenta de servicio | Sí | No | Se usa solo cuando el valor del tipo de cuenta de servicio es Ruta de acceso al archivo. Es la ruta de acceso en el sistema de archivos local de la clave de la cuenta de servicio utilizada para la autorización. Si los trabajos se ejecutan en clústeres de Managed Service para Apache Spark, establece el valor en detección automática. Si los trabajos se ejecutan en otros tipos de clústeres, el archivo debe estar presente en cada nodo del clúster.El valor predeterminado es auto-detect. |
| JSON de la cuenta de servicio | Sí | No | Solo se usa cuando el valor del tipo de cuenta de servicio es JSON. Contenido del archivo JSON de la cuenta de servicio. |
| Nombre de referencia | No | Sí | Nombre que identifica de forma única esta fuente para otros servicios, como el linaje y la anotación de metadatos. |
| Ruta de acceso | Sí | Sí | Ruta de acceso a los archivos que se leerán. Si se especifica un directorio, finaliza la ruta de acceso con una barra invertida (/). Por ejemplo, gs://bucket/path/to/directory/. Para que coincida con un patrón de nombre de archivo, puedes usar un asterisco (*) como comodín. Si no se encuentran o coinciden archivos, la canalización falla. |
| Formato | No | Sí | Es el formato de los datos que se leerán. El formato debe ser uno de los siguientes:
|
| Tamaño de la muestra | Sí | No | Es la cantidad máxima de filas que se investigan para la detección automática del tipo de datos. El valor predeterminado es 1,000. |
| Anular | Sí | No | Es una lista de columnas con los datos correspondientes de los que se omite la detección automática del tipo de datos. |
| Delimitador | Sí | No | Delimitador que se usará cuando el formato sea delimitado. Esta propiedad se ignora para otros formatos. |
| Habilita los valores cotizados | Sí | No | Indica si se debe tratar el contenido entre comillas como un valor. Esta propiedad solo se usa para los formatos csv, tsv o delimitado. Por ejemplo, si esta propiedad se establece en verdadero, el siguiente código genera dos campos: 1, "a, b, c".
El primer campo tiene 1 como valor. El segundo tiene a, b, c. Los caracteres de comillas se recortan. El delimitador de salto de línea no puede estar entre comillas.El complemento supone que las comillas están correctamente cerradas, por ejemplo, "a, b, c". No cerrar una cita ("a,b,c,) provoca un error.El valor predeterminado es False. |
| Usar la primera fila como encabezado | Sí | No | Indica si se debe usar la primera línea de cada archivo como encabezado de columna. Los formatos admitidos son text, csv, tsv y delimited. El valor predeterminado es False. |
| Tamaño mínimo de división | Sí | No | Tamaño mínimo, en bytes, para cada partición de entrada. Las particiones más pequeñas aumentan el nivel de paralelismo, pero requieren más recursos y sobrecarga.
Si el valor de Formato es blob, no puedes dividir
los datos. |
| Tamaño máximo de división | Sí | No | Es el tamaño máximo, en bytes, para cada partición de entrada. Las particiones más pequeñas aumentan el nivel de paralelismo, pero requieren más recursos y sobrecarga.
Si el valor de Formato es blob, no puedes dividir
los datos.El valor predeterminado es 128 MB. |
| Filtro de ruta de regex | Sí | No | Expresión regular con la que deben coincidir las rutas de acceso a los archivos para que se incluyan en la entrada. Se compara la ruta de acceso completa, no solo el nombre del archivo. Si no se proporciona ningún archivo, no se realiza ningún filtrado de archivos. Para obtener más información sobre la sintaxis de las expresiones regulares, consulta Patrón. |
| Campo de ruta de acceso | Sí | No | Es el campo de salida para colocar la ruta de acceso del archivo desde el que se leyó el registro. Si no se especifica, la ruta de acceso no se incluye en los registros de salida. Si se especifica, el campo debe existir en el esquema de salida como una cadena. |
| Solo nombre de archivo de ruta | Sí | No | Si se establece una propiedad de campo de ruta de acceso, usa solo el nombre del archivo y no el URI de la ruta de acceso. El valor predeterminado es False. |
| Leer archivos de forma recursiva | Sí | No | Indica si los archivos se deben leer de forma recursiva desde la ruta de acceso. El valor predeterminado es False. |
| Permitir entrada vacía | Sí | No | Indica si se permite una ruta de entrada que no contiene datos. Cuando se establece en False, el complemento arrojará un error si no hay datos para leer. Cuando se establece en True, no se arroja ningún error y se leen cero registros. El valor predeterminado es False. |
| Archivo de datos encriptado | Sí | No | Indica si los archivos están encriptados. Para obtener más información, consulta Encriptación de archivos de datos. El valor predeterminado es False. |
| Sufijo del archivo de metadatos de encriptación | Sí | No | Es el sufijo del nombre de archivo del archivo de metadatos de encriptación. El valor predeterminado es metadata. |
| Propiedades del sistema de archivos | Sí | No | Son propiedades adicionales para usar con InputFormat cuando se leen los datos. |
| Codificación de archivos | Sí | No | Es la codificación de caracteres de los archivos que se leerán. El valor predeterminado es UTF-8. |
| Esquema de salida | Sí | No | Si se establece una propiedad de campo de ruta de acceso, debe estar presente en el esquema como una cadena. |
Encriptación de archivos de datos
En esta sección, se describe la propiedad Encriptación de archivos de datos. Si lo configuras como true, los archivos se desencriptan
con el AEAD de transmisión proporcionado por la
biblioteca de Tink. Cada archivo de datos debe incluir un archivo de metadatos que contenga la información de cifrado. Por ejemplo, un archivo de datos encriptado en gs://BUCKET/PATH_TO_DIRECTORY/file1.csv.enc
debe tener un archivo de metadatos en gs://BUCKET/
PATH_TO_DIRECTORY/file1.csv.enc.metadata. El archivo de metadatos contiene un objeto JSON con las siguientes propiedades:
| Propiedad | Descripción |
|---|---|
kms |
Es el URI de Cloud Key Management Service que se usó para encriptar la clave de encriptación de datos. |
aad |
Son los datos autenticados adicionales codificados en Base64 que se usan en la encriptación. |
key set |
Es un objeto JSON que representa la información serializada del conjunto de claves de la biblioteca de Tink. |
Ejemplo
/* Counting example */ { "kms": "gcp-kms://projects/my-key-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/mykey", "aad": "73iT4SUJBM24umXecCCf3A==", "keyset": { "keysetInfo": { "primaryKeyId": 602257784, "keyInfo": [{ "typeUrl": "type.googleapis.com/google.crypto.tink.AesGcmHkdfStreamingKey", "outputPrefixType": "RAW", "keyId": 602257784, "status": "ENABLED" }] }, "encryptedKeyset": "CiQAz5HH+nUA0Zuqnz4LCnBEVTHS72s/zwjpcnAMIPGpW6kxLggSrAEAcJKHmXeg8kfJ3GD4GuFeWDZzgGn3tfolk6Yf5d7rxKxDEChIMWJWGhWlDHbBW5B9HqWfKx2nQWSC+zjM8FLefVtPYrdJ8n6Eg8ksAnSyXmhN5LoIj6az3XBugtXvCCotQHrBuyoDY+j5ZH9J4tm/bzrLEjCdWAc+oAlhsUAV77jZhowJr6EBiyVuRVfcwLwiscWkQ9J7jjHc7ih9HKfnqAZmQ6iWP36OMrEn" } }
Notas de la versión
¿Qué sigue?
- Obtén más información sobre los complementos en Cloud Data Fusion.