I connettori di sink Cloud Storage trasmettono i dati da Kafka ai bucket Cloud Storage, consentendoti di archiviare ed elaborare grandi volumi di dati in modo economico e scalabile.
I casi d'uso dei connettori di sink Cloud Storage includono i seguenti:
Importazione del data lake. Archivia i dati di Kafka in un data lake per l'archiviazione a lungo termine e l'elaborazione batch.
Archivia i dati per soddisfare i requisiti normativi.
Prima di iniziare
Prima di creare un connettore di sink Cloud Storage, assicurati di avere quanto segue:
Crea un cluster Managed Service per Apache Kafka per il cluster di connessione. Questo è il cluster Kafka principale associato al cluster di connessione. È anche il cluster di origine che forma un'estremità della pipeline del connettore.
Crea un cluster di connessione per ospitare il connettore di sink Cloud Storage.
Crea un bucket Cloud Storage per archiviare i dati trasmessi da Kafka.
Crea e configura un argomento Kafka nel cluster di origine. I dati si spostano da questo argomento Kafka al bucket Cloud Storage di destinazione.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per creare un connettore, chiedi all'amministratore di concederti il ruolo IAM Editor connettore Kafka gestito (roles/managedkafka.connectorEditor) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un connettore. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un connettore sono necessarie le seguenti autorizzazioni:
-
Crea un connettore:
managedkafka.connectors.create
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Concedi le autorizzazioni per scrivere nel bucket Cloud Storage
Il account di servizio Kafka gestito deve disporre delle seguenti autorizzazioni per scrivere messaggi nel bucket Cloud Storage:
storage.objects.createstorage.objects.delete
Concedi il ruolo Storage Object User (roles/storage.objectUser) al account di servizio nel progetto contenente il bucket Cloud Storage.
Il account di servizio Kafka gestito ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
dove PROJECT_NUMBER è il numero del progetto del cluster di connessione.
Se il cluster di connessione si trova in un progetto diverso dal cluster Managed Service per Apache Kafka consulta Crea un cluster di connessione in un progetto diverso.
Crea un connettore di sink Cloud Storage
Per creare un connettore di sink Cloud Storage, segui questi passaggi.
Console
Nella Google Cloud console, vai alla pagina Cluster di connessione.
Fai clic sul cluster di connessione per il quale vuoi creare il connettore.
Viene visualizzata la pagina Dettagli cluster di connessione.
Fai clic su Crea connettore.
Viene visualizzata la pagina Crea connettore Kafka.
Per il nome del connettore, inserisci una stringa.
Per maggiori informazioni su come assegnare un nome a un connettore, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka.
Per Plug-in connettore, seleziona Sink Cloud Storage.
Specifica gli argomenti da cui puoi trasmettere i dati.
Scegli il bucket di archiviazione in cui archiviare i dati.
(Facoltativo) Configura altre impostazioni nella sezione Configurazione.
Seleziona la policy di riavvio attività. Per saperne di più, consulta Policy di riavvio attività.
Fai clic su Crea.
gcloud
-
Nella Google Cloud console, attiva Cloud Shell.
Nella parte inferiore della Google Cloud console viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Esegui il
gcloud managed-kafka connectors createcomando:gcloud managed-kafka connectors create CONNECTOR_ID \ --location=LOCATION \ --connect-cluster=CONNECT_CLUSTER_ID \ --config-file=CONFIG_FILESostituisci quanto segue:
CONNECTOR_ID: l'ID o il nome del connettore. Per maggiori informazioni su come assegnare un nome a un connettore, consulta le linee guida per assegnare un nome a una risorsa Managed Service per Apache Kafka. Il nome di un connettore non può essere modificato.LOCATION: la località in cui crei il connettore. Deve essere la stessa località in cui hai creato il cluster di connessione.CONNECT_CLUSTER_ID: l'ID del cluster di connessione in cui viene creato il connettore.CONFIG_FILE: il percorso del file di configurazione YAML per il connettore.
Di seguito è riportato un esempio di file di configurazione per il connettore di sink Cloud Storage:
connector.class: "io.aiven.kafka.connect.gcs.GcsSinkConnector" gcs.bucket.name: "BUCKET_NAME" gcs.credentials.default: "true" format.output.type: "json" key.converter: "org.apache.kafka.connect.storage.StringConverter" value.converter: "org.apache.kafka.connect.json.JsonConverter" value.converter.schemas.enable: "false" topics: "TOPIC_LIST" tasks.max: "3"Sostituisci quanto segue:
BUCKET_NAME: il nome del bucket Cloud Storage in cui scrivere.TOPIC_LIST: un elenco separato da virgole di argomenti Kafka da cui leggere. L'elenco può includere anche espressioni regolari.
Terraform
Puoi utilizzare una risorsa Terraform per creare un connettore.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Go di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le credenziali predefinite dell'applicazione(ADC). Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Installa le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Python di Managed Service per Apache Kafka.
Per eseguire l'autenticazione in Managed Service per Apache Kafka, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale.
Dopo aver creato un connettore, puoi modificarlo, eliminarlo, metterlo in pausa, arrestarlo o riavviarlo.
Configura il connettore
Per un elenco completo delle proprietà specifiche di questo connettore, consulta la sezione Configurazione nella documentazione del connettore di sink Cloud Storage.
Campi di output
Per impostazione predefinita, il connettore scrive solo il valore del record di ogni record Kafka.
Per includere chiavi o intestazioni dei record, imposta la proprietà format.output.fields su un elenco separato da virgole dei campi da includere. I campi supportati sono key, value, headers e timestamp. Ad esempio:
format.output.fields=key,value,headers
Formati di output
Il connettore supporta la scrittura di record Kafka in formato CSV, JSON e Parquet. Le sezioni seguenti descrivono come configurare il formato di output.
Formato CSV
Per scrivere file CSV in Cloud Storage, imposta format.output.type=csv.
Utilizza i seguenti convertitori:
Convertitore di chiavi:
org.apache.kafka.connect.storage.StringConverteroorg.apache.kafka.connect.json.JsonConverterConvertitore di valori:
org.apache.kafka.connect.converters.ByteArrayConverter
Formato JSON
Per scrivere file in formato JSON in Cloud Storage, imposta format.output.type su uno dei seguenti valori:
json: ogni file di output contiene un singolo array di oggetti JSON, in cui ogni oggetto JSON rappresenta un record Kafka.jsonl: il connettore scrive ogni record Kafka come oggetto JSON su una riga separata.
L'esempio seguente mostra come il connettore scrive un record Kafka in formato JSON:
{"headers":[{"key":"k1","value":"v1"},{"key":"k2","value":"v2"}],"value":"Hello world","key":"my-key"}
Se imposti il convertitore di chiavi o valori su org.apache.kafka.connect.converters.ByteArrayConverter, il connettore scrive il campo come valore con codifica Base64.
Il connettore non include uno schema JSON nell'output, anche se value.converter.schemas.enable è true.
Formato Parquet
Per scrivere file Parquet in Cloud Storage, imposta format.output.type=parquet.
Se il convertitore di chiavi o valori è org.apache.kafka.connect.json.JsonConverter, i dati JSON devono includere uno schema. Imposta la proprietà schemas.enable del convertitore su true.
Per i dati JSON, il connettore scrive i dati come tipo struct nel file Parquet. Ad esempio, se il valore del record Kafka ha un campo denominato userid, il
connettore scrive una colonna denominata value.userid. Per appiattire i nomi delle colonne, imposta format.output.envelope=false. Se format.output.envelope è false, allora
format.output.fields deve specificare un singolo campo di output.
Impostazioni dei file di Cloud Storage
Le seguenti impostazioni controllano il modo in cui il connettore scrive i file in Cloud Storage.
gcs.bucket.name: obbligatorio. Specifica il nome del bucket Cloud Storage in cui il connettore scrive i dati.file.compression.type: specifica il tipo di compressione per i file di output. Esempi:gzip,snappy,zstdenone. Il valore predefinito ènone.file.name.prefix: specifica un prefisso da aggiungere al nome di ogni file. Il valore predefinito è vuoto ("").file.name.template: specifica un modello per il nome file. Il connettore supporta le variabili segnaposto per il modello, ad esempio{{topic}}per il nome dell'argomento e{{partition}}per il numero di partizione. Per saperne di più, consulta la documentazione del connettore di sink Cloud Storage.file.max.records: il numero massimo di record da scrivere in un singolo file. Se il valore è 0, non esiste un massimo specifico. Il valore predefinito è 0.file.max.bytes: la dimensione massima del file da scrivere, in byte. Se il valore è 0, non esiste un massimo specifico. Il valore predefinito è 0.
Raggruppamento dei record
Quando il connettore di sink Cloud Storage scrive i record Kafka, per impostazione predefinita li raggruppa per argomento e partizione. Ad esempio, i record della
partizione 0 dell'argomento my-topic vengono scritti in file denominati
my-topic-0-OFFSET, dove
OFFSET è l'offset iniziale.
Se il parametro file.name.template include la variabile segnaposto
{{key}}, il connettore
raggruppa i record per chiave. In questa modalità, il connettore scrive un file separato per ogni chiave di record. Il connettore sovrascrive ogni file con l'ultimo record per quella chiave.
Credenziali
La proprietà gcs.credentials.default deve essere impostata su true. Questa impostazione
consente al connettore di scoprire Google Cloud automaticamente le credenziali.