Condividi tramite


Copiare dati da Cassandra tramite Azure Data Factory o Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo illustra come usare l'attività Copy in una pipeline di Azure Data Factory o Synapse Analytics per copiare dati da un database di Cassandra. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Importante

Il connettore Cassandra versione 2.0 offre un supporto di Cassandra nativo migliorato. Se si usa il connettore Cassandra versione 1.0 nella soluzione, aggiornare il connettore Cassandra prima del 31 luglio 2025. Per informazioni dettagliate sulla differenza tra la versione 2.0 e la versione 1.0, vedere questa sezione .

Funzionalità supportate

Questo connettore di Cassandra è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) 7.3
Attività Lookup 7.3

① Azure Integration Runtime ② Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini o sink, vedere la tabella Archivi dati supportati.

In particolare, il connettore Cassandra supporta:

  • Le versioni di Cassandra 3.x.x e 4.x.x per la versione 2.0.
  • Cassandra versioni 2.x e 3.x per la versione 1.0.
  • La copia dei dati usando l'autenticazione Di base o Anonima.

Nota

Per attività in esecuzione nel runtime di integrazione self-hosted, Cassandra 3.x è supportato dalla versione 3.7 del runtime di integrazione e versioni successive.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.

Se l'archivio dati è un servizio dati del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.

È anche possibile usare la funzionalitàruntime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Il runtime di integrazione offre un driver per Cassandra integrato e non è quindi necessario installare manualmente alcun driver quando si copiano dati da/in Cassandra.

Introduzione

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare un servizio collegato a Cassandra usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a Cassandra nell'interfaccia utente del portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare Cassandra e selezionare il connettore di Cassandra.

    Screenshot del connettore di Cassandra.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot della configurazione del servizio collegato per Cassandra.

Dettagli di configurazione del connettore

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità di Data Factory specifiche per il connettore Cassandra.

Proprietà del servizio collegato

Per il servizio collegato di Cassandra sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
tipo La proprietà type deve essere impostata su: Cassandra
Versione Versione specificata. Sì per la versione 2.0.
ospitante Uno o più indirizzi IP o nomi host di server Cassandra.
Specificare un elenco delimitato da virgole degli indirizzi IP o nomi host per la connessione a tutti i server contemporaneamente.
porto La porta TCP che il server Cassandra usa per ascoltare le connessioni client. No (il valore predefinito è 9042)
tipo di autenticazione Tipo di autenticazione usato per la connessione al database Cassandra.
I valori consentiti sono: Di base e Anonima.
nome utente Specificare il nome utente per l'account utente. Sì, se authenticationType è impostato su Basic.
parola d’ordine Specifica la password per l'account utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault. Sì, se authenticationType è impostato su Basic.
connectVia Il runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. NO

Nota

La connessione a Cassandra mediante TLS non è attualmente supportata.

Esempio: versione 2.0

{
    "name": "CassandraLinkedService",
    "properties": {
        "type": "Cassandra",
        "version": "2.0", 
        "typeProperties": {
            "host": "<host>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: versione 1.0

{
    "name": "CassandraLinkedService",
    "properties": {
        "type": "Cassandra",
        "typeProperties": {
            "host": "<host>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo sui set di dati. Questa sezione presenta un elenco delle proprietà supportate dal set di dati Cassandra.

Per copiare dati da Cassandra, impostare la proprietà type del set di dati su CassandraTable. Sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
tipo La proprietà type del set di dati deve essere impostata su: CassandraTable
spazio delle chiavi Nome del keyspace o schema nel database Cassandra. No (se per "CassandraSource" è specificato "query")
nomeTabella Nome della tabella in un database Cassandra. No (se per "CassandraSource" è specificato "query")

Esempio:

{
    "name": "CassandraDataset",
    "properties": {
        "type": "CassandraTable",
        "typeProperties": {
            "keySpace": "<keyspace name>",
            "tableName": "<table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Cassandra linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine Cassandra.

Cassandra come origine

Se si usa la versione 2.0 per copiare dati da Cassandra, impostare il tipo di origine nell'attività di copia su CassandraSource. Nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
tipo La proprietà type dell'origine dell'attività di copia deve essere impostata su: CassandraSource
quesito Usare la query personalizzata per leggere i dati. Query CQL, vedere Informazioni di riferimento su CQL. No (se nel set di dati sono specificati "tableName" e "keyspace").
consistencyLevel Il livello di coerenza specifica quante repliche devono rispondere a una richiesta di lettura prima della restituzione dei dati all'applicazione client. Cassandra controlla il numero di repliche specificato perché i dati soddisfino la richiesta di lettura. Per informazioni dettagliate, vedere Configuring data consistency (Configurazione della coerenza dei dati).

I valori consentiti sono: ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM e LOCAL_ONE.
No (il valore predefinito è ONE)

Esempio:

"activities":[
    {
        "name": "CopyFromCassandra",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Cassandra input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "CassandraSource",
                "query": "select id, firstname, lastname from mykeyspace.mytable",
                "consistencyLevel": "one"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Se si usa la versione 1.0 per copiare dati da Cassandra, impostare il tipo di origine nell'attività di copia su CassandraSource. Nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
tipo La proprietà type dell'origine dell'attività di copia deve essere impostata su: CassandraSource
quesito Usare la query personalizzata per leggere i dati. Query SQL-92 o query CQL. Vedere il riferimento a CQL.

Quando si usa una query SQL, specificare nome keyspace.nome tabella per indicare la tabella su cui eseguire la query.
No (se nel set di dati sono specificati "tableName" e "keyspace").
consistencyLevel Il livello di coerenza specifica quante repliche devono rispondere a una richiesta di lettura prima della restituzione dei dati all'applicazione client. Cassandra controlla il numero di repliche specificato perché i dati soddisfino la richiesta di lettura. Per informazioni dettagliate, vedere Configuring data consistency (Configurazione della coerenza dei dati).

I valori consentiti sono: ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM e LOCAL_ONE.
No (il valore predefinito è ONE)

Mapping dei tipi di dati per Cassandra

Quando si copiano dati da Cassandra, vengono usati i mapping seguenti tra i tipi di dati di Cassandra e i tipi di dati provvisori usati internamente al servizio. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Tipo di dati di Cassandra Tipo di dati del servizio provvisorio (per la versione 2.0) Tipo di dati del servizio provvisorio (per la versione 1.0)
ASCII Stringa Stringa
bigint Int64 Int64
BLOB Byte[] Byte[]
BOOLEANO Booleano Booleano
DATTERO Data/Ora Data/Ora
DECIMALE Decimale Decimale
DOPPIO Doppio Doppio
Galleggiare Singolo Singolo
INET Stringa Stringa
INT Int32 Int32
SMALLINT Breve Int16
TESTO Stringa Stringa
TIMESTAMP Data/Ora Data/Ora
TIMEUUID GUID GUID
TINYINT SByte Int16
UUID (Identificatore Unico Universale) GUID GUID
VARCHAR Stringa Stringa
VARINT Decimale Decimale

Nota

Per i tipi di raccolta (mappa, set, elenco e così via) nella versione 1.0, fare riferimento alla sezione Utilizzo dei tipi di raccolta di Cassandra con tabella virtuale nella versione 1.0.

I tipi definiti dall'utente non sono supportati.

La lunghezza di una colonna Binary o String non può essere maggiore di 4000.

Lavorare con le collezioni quando si utilizza la versione 2.0

Quando si usa la versione 2.0 per copiare dati dal database Cassandra, non vengono create tabelle virtuali per i tipi di raccolta. È possibile copiare una tabella di origine nel sink nel tipo originale in formato JSON.

Esempio

Ad esempio, "ExampleTable" è una tabella di un database Cassandra contenente una colonna chiave primaria integer denominata "pk_int", una colonna testo denominata value, una colonna elenco, una colonna mappa e una colonna set (denominata "StringSet").

pk_int Valore Elenco Mapping Set di stringhe
1 "valore di esempio 1" ["1", "2", "3"] {"S1": "a", "S2": "b"} {"A", "B", "C"}
3 "valore di esempio 3" ["100", "101", "102", "105"] { "S1": "t" } {"A", "E"}

I dati possono essere letti direttamente da una tabella di origine e i valori delle colonne vengono mantenuti nei tipi originali in formato JSON, come illustrato nella tabella seguente:

pk_int Valore Elenco Mapping Set di stringhe
1 "valore di esempio 1" ["1", "2", "3"] {"S1": "a", "S2": "b"} ["A", "B", "C"]
3 "valore di esempio 3" ["100", "101", "102", "105"] { "S1": "t" } ["A", "E"]

Lavorare con le raccolte utilizzando la tabella virtuale quando si lavora con la versione 1.0

Il servizio usa un driver ODBC integrato per connettersi ai dati di un database Cassandra e copiarli. Per i tipi di raccolta, fra cui mappa, set ed elenco, il driver normalizza di nuovo i dati in tabelle virtuali corrispondenti. In particolare, se una tabella contiene colonne della raccolta, il driver genera le tabelle virtuali seguenti:

  • Una tabella di baseche contiene gli stessi dati della tabella reale eccetto le colonne della raccolta. La tabella di base ha lo stesso nome della tabella reale che rappresenta.
  • Una tabella virtuale per ogni colonna della raccolta che espande i dati nidificati. Alle tabelle virtuali che rappresentano le raccolte vengono assegnati nomi composti dal nome della tabella reale seguito dal separatore "vt" e dal nome della colonna.

Le tabelle virtuali fanno riferimento ai dati nella tabella reale, consentendo al driver di accedere ai dati denormalizzati. Per i dettagli vedere la sezione Esempio. È possibile accedere al contenuto delle raccolte Cassandra eseguendo query e join sulle tabelle virtuali.

Esempio

Ad esempio, "ExampleTable" è una tabella di un database Cassandra contenente una colonna chiave primaria integer denominata "pk_int", una colonna testo denominata value, una colonna elenco, una colonna mappa e una colonna set (denominata "StringSet").

pk_int Valore Elenco Mapping Set di stringhe
1 "valore di esempio 1" ["1", "2", "3"] {"S1": "a", "S2": "b"} {"A", "B", "C"}
3 "valore di esempio 3" ["100", "101", "102", "105"] { "S1": "t" } {"A", "E"}

Il driver genera più tabelle virtuali per rappresentare questa singola tabella. Le colonne chiave esterna nelle tabelle virtuali fanno riferimento alle colonne chiave primaria nella tabella reale e indicano a quale riga della tabella reale corrisponde la riga della tabella virtuale.

La prima tabella virtuale è la tabella di base denominata "ExampleTable", illustrata nell'esempio seguente:

pk_int Valore
1 "valore di esempio 1"
3 "valore di esempio 3"

La tabella di base contiene gli stessi dati della tabella di database originale, tranne le raccolte, che vengono omesse da questa tabella ed espanse in altre tabelle virtuali.

Le tabelle seguenti illustrano le tabelle virtuali che normalizzano di nuovo i dati dalle colonne elenco, mappa e StringSet. Le colonne con nomi che terminano con "_index" o "_key" indicano la posizione dei dati all'interno dell'elenco o della mappa originale. Le colonne con nomi che terminano con "_value" contengono i dati espansi dalla raccolta.

Tabella "ExampleTable_vt_List":

pk_int Indice_elenco Valore_elenco
1 0 1
1 1 2
1 2 3
3 0 100
3 1 101
3 2 102
3 3 103

Tabella "ExampleTable_vt_Map":

pk_int Chiave della mappa Mappa_valore
1 S1 Un
1 S2 b
3 S1 t

Tabella "ExampleTable_vt_StringSet":

pk_int Valore_di_StringSet
1 Un
1 B
1 C
3 Un
3 E

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Aggiornare il connettore Cassandra

Ecco i passaggi che consentono di aggiornare il connettore Cassandra:

  1. Nella pagina Modifica servizio collegato selezionare la versione 2.0 e configurare il servizio collegato facendo riferimento alle proprietà del servizio collegato.

  2. Nella versione 2.0, query nell'origine dell'attività di copia supporta solo query CQL, non query SQL-92. Per altre informazioni, vedere Cassandra come origine.

  3. Il mapping dei tipi di dati per la versione 2.0 è diverso da quello per la versione 1.0. Per informazioni sul mapping dei tipi di dati più recente, vedere Mapping dei tipi di dati per Cassandra.

Differenze tra Cassandra versione 2.0 e 1.0

Il connettore Cassandra versione 2.0 offre nuove funzionalità ed è compatibile con la maggior parte delle funzionalità della versione 1.0. La tabella seguente illustra le differenze di funzionalità tra la versione 2.0 e la versione 1.0.

Versione 2.0 Versione 1.0
Supportare la query CQL. Supporta query SQL-92 o query CQL.
Supporto per specificare keyspace e tableName separatamente nel set di dati. Supporta la modifica keyspace quando si seleziona "immetti manualmente il nome della tabella" nel set di dati.
Nessuna tabella virtuale viene creata per i tipi di raccolta. Per altre informazioni, vedere Usare le raccolte quando si usa la versione 2.0. Le tabelle virtuali vengono create per i tipi di raccolta. Per ulteriori informazioni, consultare Lavorare con i tipi di raccolta di Cassandra usando la tabella virtuale nella versione 1.0.
I seguenti mapping vengono usati dai tipi di dati Cassandra al tipo di dati del servizio provvisorio.

SMALLINT -> Short
TINYINT -> SByte
I seguenti mapping vengono usati dai tipi di dati Cassandra al tipo di dati del servizio provvisorio.

SMALLINT -> Int16
TINYINT -> Int16

Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.