Condividi tramite


Copiare dati da Spark usando 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à di copia in una pipeline di Azure Data Factory o Synapse Analytics per copiare dati da Spark. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Importante

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

Funzionalità supportate

Questo connettore Spark è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) ① ②
Attività di ricerca ① ②

① Azure Integration Runtime ② Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati come origini/sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.

Il servizio fornisce un driver predefinito per abilitare la connettività, pertanto non è necessario installare manualmente alcun driver usando questo connettore.

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.

Introduzione

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

Creare un servizio collegato a Spark usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a Spark 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 Spark e selezionare il connettore Spark.

    Screenshot del connettore Spark.

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

    Screenshot della configurazione del servizio collegato per Spark.

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 Spark.

Proprietà del servizio collegato

Il connettore Spark supporta ora la versione 2.0. Fare riferimento a questa sezione per aggiornare la versione del connettore Spark dalla versione 1.0. Per informazioni dettagliate sulla proprietà, vedere le sezioni corrispondenti.

Versione 2.0

Per il servizio collegato Spark versione 2.0 sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
tipo La proprietà type deve essere impostata su Spark
version Versione specificata. Il valore è 2.0.
ospitante Indirizzo IP o nome host del server Spark.
porto Porta TCP che il server Spark usa per l'ascolto delle connessioni client. Se ci si connette ad Azure HDInsight, specificare la porta come 443.
tipo di server Tipo del server Spark.
Il valore consentito è: SparkThriftServer
NO
thriftTransportProtocol Protocollo di trasporto da usare nel livello Thrift.
Il valore consentito è: HTTP
NO
tipo di autenticazione Metodo di autenticazione usato per accedere al server Spark.
I valori consentiti sono Anonymous, UsernameAndPassword, WindowsAzureHDInsightService
nome utente Nome utente usato per accedere al server Spark. NO
parola d’ordine Password corrispondente all'utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault. NO
httpPath URL parziale corrispondente al server Spark. NO
abilitaSsl Specifica se le connessioni al server vengono crittografate tramite TLS. Il valore predefinito è true. NO
enableServerCertificateValidation Specificare se abilitare la convalida del certificato SSL del server quando ci si connette.
Usare sempre System Trust Store. Il valore predefinito è true.
NO
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

Esempio:

{
    "name": "SparkLinkedService",
    "properties": {
        "type": "Spark",
        "version": "2.0",
        "typeProperties": {
            "host": "<cluster>.azurehdinsight.net",
            "port": "<port>",
            "authenticationType": "WindowsAzureHDInsightService",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

Versione 1.0

Per il servizio collegato Spark versione 1.0 sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
tipo La proprietà type deve essere impostata su Spark
ospitante Indirizzo IP o nome host del server Spark.
porto Porta TCP che il server Spark usa per l'ascolto delle connessioni client. Se ci si connette ad Azure HDInsight, specificare la porta come 443.
tipo di server Tipo del server Spark.
I valori consentiti sono SharkServer, SharkServer2, SparkThriftServer
NO
thriftTransportProtocol Protocollo di trasporto da usare nel livello Thrift.
I valori consentiti sono Binary, SASL, HTTP
NO
tipo di autenticazione Metodo di autenticazione usato per accedere al server Spark.
I valori consentiti sono Anonymous, Username, UsernameAndPassword, WindowsAzureHDInsightService
nome utente Nome utente usato per accedere al server Spark. NO
parola d’ordine Password corrispondente all'utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault. NO
httpPath URL parziale corrispondente al server Spark. NO
abilitaSsl Specifica se le connessioni al server vengono crittografate tramite TLS. Il valore predefinito è false. NO
trustedCertPath Percorso completo del file .pem contenente certificati della CA attendibili per verificare il server durante la connessione tramite TLS. Questa proprietà può essere impostata solo quando si usa TLS nel runtime di integrazione self-hosted. Il valore predefinito è il file cacerts.pem installato con il runtime di integrazione. NO
utilizzare il TrustStore di sistema Specifica se usare o meno un certificato della CA dall'archivio di scopi consentiti o da un file .pem specificato. Il valore predefinito è false. NO
allowHostNameCNMismatch Specifica se richiedere un nome di certificato TLS/SSL rilasciato dalla CA in modo che corrisponda al nome host del server durante la connessione tramite TLS. Il valore predefinito è false. NO
allowSelfSignedServerCert Specifica se consentire o meno i certificati autofirmati dal server. Il valore predefinito è false. NO
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

Esempio:

{
    "name": "SparkLinkedService",
    "properties": {
        "type": "Spark",
        "typeProperties": {
            "host": "<cluster>.azurehdinsight.net",
            "port": "<port>",
            "authenticationType": "WindowsAzureHDInsightService",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

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 Spark.

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

Proprietà Descrizione Obbligatoria
tipo La proprietà Tipo del set di dati deve essere impostata su: SparkObject
schema Nome dello schema. No (se nell'origine dell'attività è specificato "query")
tabella Nome della tabella. No (se nell'origine dell'attività è specificato "query")
tableName Nome della tabella con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No (se nell'origine dell'attività è specificato "query")

Esempio

{
    "name": "SparkDataset",
    "properties": {
        "type": "SparkObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Spark 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 Spark.

Spark come origine

Per copiare dati da Spark, impostare il tipo di origine nell'attività di copia su SparkSource. Nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
tipo La proprietà type dell'origine dell'attività di copia deve essere impostata su SparkSource
quesito Usare la query SQL personalizzata per leggere i dati. Ad esempio "SELECT * FROM MyTable". No (se nel set di dati è specificato "tableName")

Esempio:

"activities":[
    {
        "name": "CopyFromSpark",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Spark input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SparkSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Mapping dei tipi di dati per Spark

Quando si copiano dati da e verso Spark, all'interno del servizio vengono utilizzate le seguenti mappature provvisorie dei tipi di dati. Per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink, vedere Mapping dello schema e del tipo di dati.

Tipo di dati Spark Tipo di dati del servizio provvisorio (per la versione 2.0) Tipo di dati del servizio provvisorio (per la versione 1.0)
Tipo booleano Boolean Boolean
ByteType Sbyte Int16
ShortType Int16 Int16
IntegerType Int32 Int32
LongType Int64 Int64
FloatType Single Single
DoubleType Double Double
DateType Data e Ora Data e Ora
TimestampType DateTimeOffset Data e Ora
StringType string string
TipoBinario Byte[] Byte[]
DecimalType Decimal Decimal
ArrayType string string
StructType string string
MapType string string
TimestampNTZType Data e Ora Data e Ora
YearMonthIntervalType string Non supportato. 
DayTimeIntervalType string Non supportato.

Proprietà dell'attività Lookup

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

Aggiornare il connettore Spark

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

  2. Il mapping dei tipi di dati per il servizio collegato Spark 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 Spark.

Differenze tra Spark versione 2.0 e versione 1.0

Il connettore Spark 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
SharkServer e SharkServer2 non sono supportati per serverType. Supporto di SharkServer e SharkServer2 per serverType.
Binary e SASL non sono supportati per thriftTransportProtocl. Supporto binario e SASL per thriftTransportProtocl.
Il tipo di autenticazione del nome utente non è supportato. Supporta il tipo di autenticazione basato su nome utente.
Il valore predefinito di enableSSL è true. trustedCertPathuseSystemTrustStore, allowHostNameCNMismatche allowSelfSignedServerCert non sono supportati.

enableServerCertificateValidation è supportato.
Il valore predefinito di enableSSL è false. Inoltre, supportare trustedCertPath, useSystemTrustStoreallowHostNameCNMismatch e allowSelfSignedServerCert.

enableServerCertificateValidation non è supportato.
I mapping seguenti vengono usati dai tipi di dati Spark ai tipi di dati provvisori del servizio usati internamente dal servizio.

Tipo di Timestamp -> DateTimeOffset
YearMonthIntervalType -> String
DayTimeIntervalType -> String
I mapping seguenti vengono usati dai tipi di dati Spark ai tipi di dati provvisori del servizio usati internamente dal servizio.

TimestampType -> DateTime
Le altre mappature elencate a sinistra supportate dalla versione 2.0 non sono supportate dalla versione 1.0.

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