Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: NoSQL
Kafka Connect är ett verktyg för skalbara och tillförlitligt strömmande data mellan Apache Kafka och andra system. Med Kafka Connect kan du definiera anslutningsappar som flyttar stora datamängder till och från Kafka. Kafka Anslut för Azure Cosmos DB är en anslutningsapp för att läsa från och skriva data till Azure Cosmos DB.
Semantik för käll- och mottagaranslutningar
Källanslutning – För närvarande stöder den här anslutningen minst en gång med flera uppgifter och exakt en gång för enskilt uppdrag.
Sänkkontakt – Denna kontakt har fullt stöd för exakt-en-gång-semantik.
Dataformat som stöds
Kontakterna för source och sink kan konfigureras att stödja följande dataformat:
| Format | beskrivning |
|---|---|
| Oformaterad JSON | JSON-poststruktur utan något kopplat schema. |
| JSON med schema | JSON-poststruktur med explicit schemainformation för att säkerställa att data matchar det förväntade formatet. |
| AVRO | Ett radorienterat fjärrproceduranrop och data serialiseringsramverk som utvecklats i Apaches Hadoop-projekt. Den använder JSON för att definiera datatyper, protokoll och serialiserar data i ett kompakt binärt format. |
Nyckel- och värdeinställningarna, inklusive format och serialisering, kan konfigureras separat i Kafka. Därför är det möjligt att arbeta med olika dataformat för nycklar respektive värden. För att hantera olika dataformat finns det konverterarkonfiguration för både key.converter och value.converter.
Konfigurationsexempel för konverterare
Oformaterad JSON
Om du behöver använda JSON utan schemaregister för att ansluta data använder du det JsonConverter som stöds med Kafka. I följande exempel visas nyckel JsonConverter - och värdeegenskaperna som läggs till i konfigurationen:
key.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=false
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false
JSON med schema
Ange egenskaperna key.converter.schemas.enable och value.converter.schemas.enable till true så att nyckeln eller värdet behandlas som ett sammansatt JSON-objekt som innehåller både ett internt schema och data. Utan dessa egenskaper behandlas nyckeln eller värdet som oformaterad JSON.
key.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=true
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=true
Det resulterande meddelandet till Kafka skulle se ut som exemplet nedan, med schema och nyttolast som element på den översta nivån i JSON:
{
"schema": {
"type": "struct",
"fields": [
{
"type": "int32",
"optional": false,
"field": "userid"
},
{
"type": "string",
"optional": false,
"field": "name"
}
],
"optional": false,
"name": "ksql.users"
},
"payload": {
"userid": 123,
"name": "user's name"
}
}
Anteckning
Meddelandet som skrivits till Azure Cosmos DB består av schemat och nyttolasten. Observera meddelandets storlek samt den andel av meddelandet som består av nyttolasten jämfört med schemat. Schemat upprepas i varje meddelande som du skriver till Kafka. I sådana här scenarier kanske du vill använda ett serialiseringsformat som JSON-schema eller AVRO, där schemat lagras separat, och meddelandet innehåller bara nyttolasten.
AVRO
Kafka Connector stöder AVRO-dataformat. Om du vill använda AVRO-format konfigurerar du ett AvroConverter så att Kafka Connect vet hur man arbetar med AVRO-data. Azure Cosmos DB Kafka Connect har testats med AvroConverter som tillhandahålls av Confluent under Apache 2.0-licens. Du kan också använda en annan anpassad konverterare om du vill.
Kafka hanterar nycklar och värden oberoende av varandra. Ange egenskaperna key.converter och value.converter enligt vad som krävs i arbetskonfigurationen. När du använder AvroConverterlägger du till en extra konverteraregenskap som tillhandahåller URL:en för schemaregistret. I följande exempel visas nyckel- och värdeegenskaperna för AvroConverter som läggs till i konfigurationen:
key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url=http://schema-registry:8081
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://schema-registry:8081
Välj ett konverteringsformat
Följande är några saker att tänka på när du väljer ett konverteringsformat:
När du konfigurerar en källanslutning:
Om du vill att Kafka Connect ska inkludera oformaterad JSON i meddelandet som den skriver till Kafka anger du Plain JSON-konfiguration .
Om du vill att Kafka Connect ska inkludera schemat i meddelandet som det skriver till Kafka anger du JSON med Schemakonfiguration .
Om du vill att Kafka Connect ska inkludera AVRO-format i meddelandet som skrivs till Kafka anger du AVRO-konfiguration .
Om du använder JSON-data från ett Kafka-ämne i en Sink connector, är det viktigt att förstå hur JSON serialiserades när de skrevs till Kafka-ämnet:
Om den har skrivits med JSON-serialiseraren anger du Kafka Connect för att använda JSON-konverteraren
(org.apache.kafka.connect.json.JsonConverter).- Om JSON-data har skrivits som en vanlig sträng kontrollerar du om data innehåller ett kapslat schema eller nyttolast. Om så är fallet, ställ in JSON med schemakonfiguration.
- Men om du använder JSON-data och den inte har schema- eller nyttolastkonstruktionen måste du be Kafka Connect att inte söka efter ett schema genom att ange
schemas.enable=falseenligt Vanlig JSON-konfiguration .
Om den skrevs med AVRO-serialiseraren anger du Kafka Connect så att AVRO-konverteraren
(io.confluent.connect.avro.AvroConverter)används enligt AVRO-konfigurationen .
Konfiguration
Vanliga konfigurationsegenskaper
Kopplingarna för källa och mottagare har följande gemensamma konfigurationsinställningar:
| Namn | Typ | beskrivning | Obligatoriskt/valfritt |
|---|---|---|---|
| connect.cosmos.connection.endpoint | URI | Azure Cosmos DB-slutpunkts-URI-sträng | Obligatoriskt |
| connect.cosmos.master.key | sträng | Den primära Azure Cosmos DB-nyckel som mottagaren ansluter till. | Obligatoriskt |
| connect.cosmos.databasename | sträng | Namnet på Den Azure Cosmos DB-databas som mottagaren skriver till. | Obligatoriskt |
| connect.cosmos.containers.topicmap | sträng | Mappning mellan Kafka-ämnen och Azure Cosmos DB-containrar. Den formateras med CSV som topic#container,topic2#container2 |
Obligatoriskt |
| connect.cosmos.connection.gateway.enabled | booleskt | Indikera om gatewayläge ska användas med en flagga. Som standard är det falskt. | Valfritt |
Information om anslutningsspecifik konfiguration för mottagare finns i dokumentationen för anslutningsappen för mottagare
Information om konfiguration som är specifik för källanslutningsappen finns i dokumentationen för källanslutningsappen
Vanliga konfigurationsfel
Om du felkonfigurerar konverterarna i Kafka Connect kan det leda till fel. De här felen visas i Kafka Connector-mottagaren eftersom du försöker deserialisera de meddelanden som redan lagras i Kafka. Konverterarproblem uppstår vanligtvis inte i källan eftersom serialisering anges vid källan.
Mer information finns i dokumentet vanliga konfigurationsfel .
Projektinställningar
Se utvecklaregenomgång och projektgenomgång för inledande installationsinstruktioner.
Prestandatest
Mer information om prestandatesterna som körs för mottagar- och källanslutningarna finns i dokumentet prestandatestning.
Referera till prestandamiljöns inställning för exakta steg för att implementera prestandatestmiljön för kontakterna.