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 conveniente e scalabile.
I casi d'uso per i connettori di sink Cloud Storage includono:
Importazione del data lake. Archivia i dati 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 disporre di quanto segue:
Crea un cluster Managed Service per Apache Kafka per il tuo cluster Connect. Questo è il cluster Kafka principale associato al cluster di connessione. Questo è anche il cluster di origine che forma un'estremità della pipeline del connettore.
Crea un cluster Connect per ospitare il connettore di sink Cloud Storage.
Crea un bucket Cloud Storage per archiviare i dati trasmessi in streaming da Kafka.
Crea e configura un argomento Kafka all'interno del cluster di origine. I dati vengono spostati 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
Managed Kafka Connector Editor (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 di progetto del cluster Connect.
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 console Google Cloud , vai alla pagina Connetti cluster.
Fai clic sul cluster di connessione per cui 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 le linee guida 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 in streaming.
Scegli il bucket di archiviazione in cui archiviare i dati.
(Facoltativo) Configura impostazioni aggiuntive nella sezione Configurazione.
Seleziona la policy di riavvio attività. Per saperne di più, consulta le norme sul riavvio delle attività.
Fai clic su Crea.
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud 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à installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
Esegui il comando
gcloud managed-kafka connectors create: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 le linee guida 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 è immutabile.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 Connect in cui viene creato il connettore.CONFIG_FILE: il percorso del file di configurazione YAML per il connettore.
Ecco 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ù, vedi Configura ADC per un ambiente di sviluppo locale.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Installare 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 Installare 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ù, vedi 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 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 i 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, dove 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 codificato in 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 rendere i nomi delle colonne piatti,
imposta format.output.envelope=false. Se format.output.envelope è false, allora
format.output.fields deve specificare un singolo campo di output.
Impostazioni dei file 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 sonogzip,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 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 Cloud Storage Sink.
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 rilevare automaticamente le credenziali Google Cloud .
Passaggi successivi
Risolvere i problemi relativi a un connettore di sink Cloud Storage
Mettere in pausa, riprendere, arrestare e riavviare un connettore