Gegevens verplaatsen van een on-premises Cassandra-database met behulp van Azure Data Factory

Notitie

Dit artikel is van toepassing op versie 1 van Data Factory. Als u de huidige versie van de Data Factory-service gebruikt, raadpleegt u de Cassandra-connector in V2.

In dit artikel wordt uitgelegd hoe u de kopieeractiviteit in Azure Data Factory kunt gebruiken om gegevens te verplaatsen van een on-premises Cassandra-database. Het is gebaseerd op het artikel Activiteiten voor gegevensverplaatsing , waarin een algemeen overzicht wordt weergegeven van gegevensverplaatsing met de kopieeractiviteit.

U kunt gegevens kopiëren uit een on-premises Cassandra-gegevensarchief naar elk ondersteund sink-gegevensarchief. Zie de tabel Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als sinks door de kopieeractiviteit. Data Factory ondersteunt momenteel alleen het verplaatsen van gegevens van een Cassandra-gegevensarchief naar andere gegevensarchieven, maar niet voor het verplaatsen van gegevens van andere gegevensarchieven naar een Cassandra-gegevensarchief.

Ondersteunde versies

De Cassandra-connector ondersteunt de volgende versies van Cassandra: 2.x en 3.x. Voor activiteiten die worden uitgevoerd op zelf-hostende Integration Runtime, wordt Cassandra 3.x ondersteund sinds IR versie 3.7 en hoger.

Vereisten

Als de Azure Data Factory-service verbinding kan maken met uw on-premises Cassandra-database, moet u een Gegevensbeheer Gateway installeren op dezelfde computer die als host fungeert voor de database of op een afzonderlijke computer om te voorkomen dat resources met de database concurreren. Gegevensbeheer Gateway is een onderdeel dat on-premises gegevensbronnen verbindt met cloudservices op een veilige en beheerde manier. Zie Gegevensbeheer Gateway-artikel voor meer informatie over Gegevensbeheer Gateway. Zie Het artikel Gegevens verplaatsen van on-premises naar de cloud voor stapsgewijze instructies over het instellen van een gegevenspijplijn voor het instellen van een gegevenspijplijn om gegevens te verplaatsen.

U moet de gateway gebruiken om verbinding te maken met een Cassandra-database, zelfs als de database wordt gehost in de cloud, bijvoorbeeld op een Azure IaaS-VM. Y U kunt de gateway op dezelfde VIRTUELE machine hebben die als host fungeert voor de database of op een afzonderlijke VM, zolang de gateway verbinding kan maken met de database.

Wanneer u de gateway installeert, wordt automatisch een Microsoft Cassandra ODBC-stuurprogramma geïnstalleerd dat wordt gebruikt om verbinding te maken met de Cassandra-database. Daarom hoeft u geen stuurprogramma handmatig te installeren op de gatewaycomputer bij het kopiëren van gegevens uit de Cassandra-database.

Notitie

Zie Problemen met de gateway oplossen voor tips over het oplossen van problemen met betrekking tot verbinding/gateway.

Aan de slag

U kunt een pijplijn maken met een kopieeractiviteit waarmee gegevens worden verplaatst uit een on-premises Cassandra-gegevensarchief met behulp van verschillende hulpprogramma's/API's.

  • De eenvoudigste manier om een pijplijn te maken, is door de wizard Kopiëren te gebruiken. Zie zelfstudie: Een pijplijn maken met de wizard Kopiëren voor een beknopt overzicht van het maken van een pijplijn met behulp van de wizard Gegevens kopiëren.
  • U kunt ook de volgende hulpprogramma's gebruiken om een pijplijn te maken: Visual Studio, Azure PowerShell, Azure Resource Manager-sjabloon, .NET API en REST API. Zie Copy-activiteit zelfstudie voor stapsgewijze instructies voor het maken van een pijplijn met een kopieeractiviteit.

Ongeacht of u de hulpprogramma's of API's gebruikt, voert u de volgende stappen uit om een pijplijn te maken waarmee gegevens uit een brongegevensarchief worden verplaatst naar een sinkgegevensarchief:

  1. Maak gekoppelde services om invoer- en uitvoergegevensarchieven te koppelen aan uw data factory.
  2. Maak gegevenssets om invoer- en uitvoergegevens voor de kopieerbewerking weer te geven.
  3. Maak een pijplijn met een kopieeractiviteit die een gegevensset als invoer en een gegevensset als uitvoer gebruikt.

Wanneer u de wizard gebruikt, worden JSON-definities voor deze Data Factory-entiteiten (gekoppelde services, gegevenssets en de pijplijn) automatisch voor u gemaakt. Wanneer u hulpprogramma's/API's (behalve .NET API) gebruikt, definieert u deze Data Factory-entiteiten met behulp van de JSON-indeling. Zie JSON-voorbeeld voor JSON-definities voor Data Factory-entiteiten die worden gebruikt voor het kopiëren van gegevens uit een on-premises Cassandra-gegevensarchief. Zie JSON-voorbeeld: Gegevens kopiëren van Cassandra naar de sectie Azure Blob van dit artikel.

De volgende secties bevatten informatie over JSON-eigenschappen die worden gebruikt om Data Factory-entiteiten te definiëren die specifiek zijn voor een Cassandra-gegevensarchief:

Gekoppelde service-eigenschappen

De volgende tabel bevat een beschrijving voor JSON-elementen die specifiek zijn voor de gekoppelde Cassandra-service.

Eigenschap Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op: OnPremisesCassandra Yes
host Een of meer IP-adressen of hostnamen van Cassandra-servers.

Geef een door komma's gescheiden lijst met IP-adressen of hostnamen op om gelijktijdig verbinding te maken met alle servers.
Yes
poort De TCP-poort die de Cassandra-server gebruikt om te luisteren naar clientverbindingen. Nee, standaardwaarde: 9042
authenticationType Basic of Anoniem Yes
gebruikersnaam Geef de gebruikersnaam op voor het gebruikersaccount. Ja, als authenticationType is ingesteld op Basic.
wachtwoord Geef het wachtwoord op voor het gebruikersaccount. Ja, als authenticationType is ingesteld op Basic.
gatewayName De naam van de gateway die wordt gebruikt om verbinding te maken met de on-premises Cassandra-database. Yes
encryptedCredential Referenties die zijn versleuteld door de gateway. No

Notitie

Momenteel wordt de verbinding met Cassandra met behulp van TLS niet ondersteund.

Eigenschappen van gegevensset

Zie het artikel Gegevenssets maken voor een volledige lijst met sectie-eigenschappen & die beschikbaar zijn voor het definiëren van gegevenssets. Secties zoals structuur, beschikbaarheid en beleid van een JSON-gegevensset zijn vergelijkbaar voor alle typen gegevenssets (Azure SQL, Azure-blob, Azure-tabel, enzovoort).

De sectie typeProperties verschilt voor elk type gegevensset en biedt informatie over de locatie van de gegevens in het gegevensarchief. De sectie typeProperties voor gegevensset van het type CassandraTable heeft de volgende eigenschappen

Eigenschap Beschrijving Vereist
keyspace Naam van de keyspace of het schema in de Cassandra-database. Ja (Als de query voor CassandraSource niet is gedefinieerd).
tableName Naam van de tabel in cassandra-database. Ja (Als de query voor CassandraSource niet is gedefinieerd).

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen maken voor een volledige lijst met sectie-eigenschappen & die beschikbaar zijn voor het definiëren van activiteiten. Eigenschappen zoals naam, beschrijving, invoer- en uitvoertabellen en beleid zijn beschikbaar voor alle typen activiteiten.

Terwijl de eigenschappen die beschikbaar zijn in de sectie typeProperties van de activiteit, variëren met elk activiteitstype. Voor Copy-activiteit variëren ze afhankelijk van de typen bronnen en sinks.

Wanneer de bron van het type CassandraSource is, zijn de volgende eigenschappen beschikbaar in de sectie typeProperties:

Eigenschap Beschrijving Toegestane waarden Vereist
query Gebruik de aangepaste query om gegevens te lezen. SQL-92-query of CQL-query. Zie CQL-verwijzing.

Wanneer u SQL query gebruikt, geeft u de naam van de keyspace name.table op om de tabel weer te geven die u wilt opvragen.
Nee (als tableName en keyspace in de gegevensset zijn gedefinieerd).
consistencyLevel Het consistentieniveau geeft aan hoeveel replica's moeten reageren op een leesaanvraag voordat gegevens worden geretourneerd naar de clienttoepassing. Cassandra controleert het opgegeven aantal replica's voor gegevens om te voldoen aan de leesaanvraag. ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, LOCAL_ONE. Zie Gegevensconsistentie configureren voor meer informatie. Nee. De standaardwaarde is ONE.

JSON-voorbeeld: Gegevens kopiëren van Cassandra naar Azure Blob

Dit voorbeeld bevat voorbeeld-JSON-definities die u kunt gebruiken om een pijplijn te maken met behulp van Visual Studio of Azure PowerShell. Het laat zien hoe u gegevens kopieert van een on-premises Cassandra-database naar een Azure Blob Storage. Gegevens kunnen echter worden gekopieerd naar een van de sinks die hier worden vermeld met behulp van de kopieeractiviteit in Azure Data Factory.

Belangrijk

Dit voorbeeld bevat JSON-fragmenten. Het bevat geen stapsgewijze instructies voor het maken van de data factory. Zie het artikel over het verplaatsen van gegevens tussen on-premises locaties en in de cloud voor stapsgewijze instructies.

Het voorbeeld heeft de volgende data factory-entiteiten:

Aan Cassandra gekoppelde service:

In dit voorbeeld wordt de gekoppelde Cassandra-service gebruikt. Zie de sectie gekoppelde Cassandra-service voor de eigenschappen die worden ondersteund door deze gekoppelde service.

{
    "name": "CassandraLinkedService",
    "properties":
    {
        "type": "OnPremisesCassandra",
        "typeProperties":
        {
            "authenticationType": "Basic",
            "host": "mycassandraserver",
            "port": 9042,
            "username": "user",
            "password": "password",
            "gatewayName": "mygateway"
        }
    }
}

Azure Storage gekoppelde service:

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        }
    }
}

Cassandra-invoergegevensset:

{
    "name": "CassandraInput",
    "properties": {
        "linkedServiceName": "CassandraLinkedService",
        "type": "CassandraTable",
        "typeProperties": {
            "tableName": "mytable",
            "keySpace": "mykeyspace"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Als u extern op true instelt, wordt de Data Factory-service geïnformeerd dat de gegevensset extern is van de gegevensfactory en niet wordt geproduceerd door een activiteit in de data factory.

Azure Blob-uitvoergegevensset:

Gegevens worden elk uur naar een nieuwe blob geschreven (frequentie: uur, interval: 1).

{
    "name": "AzureBlobOutput",
    "properties":
    {
        "type": "AzureBlob",
        "linkedServiceName": "AzureStorageLinkedService",
        "typeProperties":
        {
            "folderPath": "adfgetstarted/fromcassandra"
        },
        "availability":
        {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Copy-activiteit in een pijplijn met cassandra-bron en blob-sink:

De pijplijn bevat een kopieeractiviteit die is geconfigureerd voor het gebruik van de invoer- en uitvoergegevenssets en die elk uur moet worden uitgevoerd. In de JSON-definitie van de pijplijn wordt het brontype ingesteld op CassandraSource en het sinktype is ingesteld op BlobSink.

Zie eigenschappen van het type RelationalSource voor de lijst met eigenschappen die worden ondersteund door de RelationalSource.

{
    "name":"SamplePipeline",
    "properties":{
        "start":"2016-06-01T18:00:00",
        "end":"2016-06-01T19:00:00",
        "description":"pipeline with copy activity",
        "activities":[
        {
            "name": "CassandraToAzureBlob",
            "description": "Copy from Cassandra to an Azure blob",
            "type": "Copy",
            "inputs": [
            {
                "name": "CassandraInput"
            }
            ],
            "outputs": [
            {
                "name": "AzureBlobOutput"
            }
            ],
            "typeProperties": {
                "source": {
                    "type": "CassandraSource",
                    "query": "select id, firstname, lastname from mykeyspace.mytable"

                },
                "sink": {
                    "type": "BlobSink"
                }
            },
            "scheduler": {
                "frequency": "Hour",
                "interval": 1
            },
            "policy": {
                "concurrency": 1,
                "executionPriorityOrder": "OldestFirst",
                "retry": 0,
                "timeout": "01:00:00"
            }
        }
        ]
    }
}

Typetoewijzing voor Cassandra

Cassandra-type Op .NET gebaseerd type
ASCII Tekenreeks
BIGINT Int64
BLOB Byte[]
BOOLEAN Booleaans
DECIMAL Decimaal
DOUBLE Dubbel
FLOAT Enkelvoudig
INET Tekenreeks
INT Int32
TEXT Tekenreeks
TIMESTAMP DateTime
TIMEUUID Guid
UUID Guid
VARCHAR Tekenreeks
VARINT Decimaal

Notitie

Voor verzamelingstypen (kaart, set, lijst, enzovoort) raadpleegt u Werken met Cassandra-verzamelingstypen met behulp van de sectie virtuele tabellen .

Door de gebruiker gedefinieerde typen worden niet ondersteund.

De lengte van binaire kolommen en tekenreekskolommen mag niet groter zijn dan 4000.

Werken met verzamelingen met behulp van een virtuele tabel

Azure Data Factory maakt gebruik van een ingebouwd ODBC-stuurprogramma om verbinding te maken met en gegevens te kopiëren uit uw Cassandra-database. Voor verzamelingstypen, waaronder kaart, set en lijst, worden de gegevens opnieuw genormaliseerd in de bijbehorende virtuele tabellen. Als een tabel verzamelingskolommen bevat, genereert het stuurprogramma de volgende virtuele tabellen:

  • Een basistabel, die dezelfde gegevens bevat als de echte tabel, met uitzondering van de verzamelingskolommen. De basistabel gebruikt dezelfde naam als de echte tabel die deze vertegenwoordigt.
  • Een virtuele tabel voor elke verzamelingskolom, waarmee de geneste gegevens worden uitgebreid. De virtuele tabellen die verzamelingen vertegenwoordigen, hebben de naam van de echte tabel, een scheidingsteken 'vt' en de naam van de kolom.

Virtuele tabellen verwijzen naar de gegevens in de echte tabel, zodat het stuurprogramma toegang heeft tot de gedenormaliseerde gegevens. Zie de sectie Voorbeeld voor meer informatie. U hebt toegang tot de inhoud van Cassandra-verzamelingen door query's uit te voeren op de virtuele tabellen en deze samen te voegen.

U kunt de wizard Kopiëren gebruiken om de lijst met tabellen in de Cassandra-database, inclusief de virtuele tabellen, te bekijken en een voorbeeld van de gegevens hierin te bekijken. U kunt ook een query maken in de wizard Kopiëren en valideren om het resultaat te zien.

Voorbeeld

De volgende 'ExampleTable' is bijvoorbeeld een Cassandra-databasetabel die een primaire-sleutelkolom met een geheel getal bevat met de naam 'pk_int', een tekstkolom met de naam waarde, een lijstkolom, een kaartkolom en een setkolom (met de naam 'StringSet').

pk_int Waarde Lijst Kaart StringSet
1 "voorbeeldwaarde 1" ["1", "2", "3"] {"S1": "a", "S2": "b"} {"A", "B", "C"}
3 "voorbeeldwaarde 3" ["100", "101", "102", "105"] {"S1": "t"} {"A", "E"}

Het stuurprogramma genereert meerdere virtuele tabellen om deze ene tabel weer te geven. De refererende-sleutelkolommen in de virtuele tabellen verwijzen naar de primaire-sleutelkolommen in de echte tabel en geven aan met welke echte tabelrij de virtuele tabelrij overeenkomt.

De eerste virtuele tabel is de basistabel met de naam 'ExampleTable' wordt weergegeven in de volgende tabel. De basistabel bevat dezelfde gegevens als de oorspronkelijke databasetabel, met uitzondering van de verzamelingen, die uit deze tabel worden weggelaten en in andere virtuele tabellen worden uitgevouwen.

pk_int Waarde
1 "voorbeeldwaarde 1"
3 "voorbeeldwaarde 3"

In de volgende tabellen worden de virtuele tabellen weergegeven die de gegevens uit de kolommen Lijst, Kaart en StringSet opnieuw normaliseren. De kolommen met namen die eindigen op '_index' of '_key' geven de positie van de gegevens in de oorspronkelijke lijst of kaart aan. De kolommen met namen die eindigen op '_value' bevatten de uitgebreide gegevens uit de verzameling.

Tabel 'ExampleTable_vt_List':

pk_int List_index List_value
1 0 1
1 1 2
1 2 3
3 0 100
3 1 101
3 2 102
3 3 103

Tabel 'ExampleTable_vt_Map':

pk_int Map_key Map_value
1 S1 A
1 S2 b
3 S1 t

Tabel 'ExampleTable_vt_StringSet':

pk_int StringSet_value
1 A
1 B
1 C
3 A
3 E

Bron toewijzen aan sinkkolommen

Zie Kolommen voor toewijzingsgegevenssets in Azure Data Factory voor meer informatie over het toewijzen van kolommen in de brongegevensset aan kolommen in sinkgegevenssets.

Herhaalbare leesbewerkingen uit relationele bronnen

Houd bij het kopiëren van gegevens uit relationele gegevensarchieven rekening met herhaalbaarheid om onbedoelde resultaten te voorkomen. In Azure Data Factory kunt u een segment handmatig opnieuw uitvoeren. U kunt ook beleid voor opnieuw proberen configureren voor een gegevensset, zodat een segment opnieuw wordt uitgevoerd wanneer er een fout optreedt. Wanneer een segment op beide manieren opnieuw wordt uitgevoerd, moet u ervoor zorgen dat dezelfde gegevens worden gelezen, ongeacht hoe vaak een segment wordt uitgevoerd. Zie Herhaalbaar lezen uit relationele bronnen.

Prestaties en afstemming

Zie de handleiding voor het afstemmen van de prestaties & van kopieeractiviteiten voor meer informatie over belangrijke factoren die van invloed zijn op de prestaties van gegevensverplaatsing (kopieeractiviteit) in Azure Data Factory en op verschillende manieren om deze te optimaliseren.