Condividi tramite


Copiare e trasformare dati da Hive usando Azure Data Factory

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 Hive. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.

Importante

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

Funzionalità supportate

Questo connettore Hive è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) (1) (2)
Flusso di dati per mapping (origine/-) (1)
Attività Lookup (1) (2)

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

Il connettore supporta le versioni di Windows in questo articolo.

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 Hive usando l’interfaccia utente

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

    Selezionare il connettore Hive.

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

    Configurare un servizio collegato ad Hive.

Dettagli di configurazione del connettore

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

Proprietà del servizio collegato

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

Versione 2.0 (anteprima)

Il servizio collegato Hive supporta le proprietà seguenti quando si applica la versione 2.0 (anteprima):

Proprietà Descrizione Richiesto
tipo La proprietà type deve essere impostata su: Hive
Versione Versione specificata. Il valore è 2.0.
ospitante Indirizzo IP o nome host del server Hive.
porto Porta TCP che il server Hive usa per l'ascolto delle connessioni client. Se ci si connette ad Azure HDInsight, specificare la porta come 443.
tipo di server Tipo di server Hive.
Il valore consentito è: HiveServer2
NO
protocollo di trasporto Thrift Protocollo di trasporto da usare nel livello Thrift.
Il valore consentito è : Binary, SASL, HTTP
NO
tipo di autenticazione Metodo di autenticazione usato per accedere al server Hive.
I valori consentiti sono : Anonymous, UsernameAndPassword, WindowsAzureHDInsightService. L’autenticazione Kerberos non è supportata ora.
nome utente Nome utente usato per accedere al server Hive. 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
httpPercorso URL parziale corrispondente al server Hive. NO
abilitaSsl Specifica se le connessioni al server vengono crittografate tramite TLS. Il valore predefinito è true. NO
abilitaValidazioneCertificatoServer Specificare se abilitare la convalida del certificato SSL del server quando ci si connette. Usare sempre System Trust Store. Il valore predefinito è true. NO
riferimentoDiArchiviazione Riferimento al servizio collegato dell’account di archiviazione usato per la gestione temporanea dei dati nel flusso di dati di mapping. Questa operazione è necessaria solo quando si usa il servizio collegato Hive nel flusso di dati di mapping. 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": "HiveLinkedService",
    "properties": {
        "type": "Hive",
        "version": "2.0",
        "typeProperties": {
            "host" : "<host>",
            "port" : "<port>",
            "authenticationType" : "WindowsAzureHDInsightService",
            "username" : "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "serverType": "HiveServer2",
            "thriftTransportProtocol": "HTTP",
            "enableSsl": true,
            "enableServerCertificateValidation": true
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Versione 1.0

Quando si applica la versione 1.0, sono supportate le proprietà seguenti per il servizio collegato Hive:

Proprietà Descrizione Richiesto
tipo La proprietà type deve essere impostata su: Hive
ospitante Indirizzo IP o nome host del server Hive, separato da ‘;’ per più host (solo quando serviceDiscoveryMode è abilitato).
porto Porta TCP che il server Hive usa per l'ascolto delle connessioni client. Se ci si connette ad Azure HDInsight, specificare la porta come 443.
tipo di server Tipo di server Hive.
I valori consentiti sono: HiveServer1, HiveServer2, HiveThriftServer
NO
protocollo di trasporto Thrift 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 Hive.
I valori consentiti sono: Anonymous, Username, UsernameAndPassword, WindowsAzureHDInsightService. L’autenticazione Kerberos non è supportata ora.
modalità di rilevamento del servizio true per indicare l'uso del servizio ZooKeeper; in caso contrario, false. NO
zooKeeperNameSpace Spazio dei nomi in ZooKeeper nel quale vengono aggiunti i nodi del server Hive 2. NO
useNativeQuery Specifica se il driver usa query HiveQL native o le converte in un formato equivalente in HiveQL. NO
nome utente Nome utente usato per accedere al server Hive. 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
httpPercorso URL parziale corrispondente al server Hive. NO
abilitaSsl Specifica se le connessioni al server vengono crittografate tramite TLS. Il valore predefinito è false. NO
trustedCertPath (percorso certificato attendibile) 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 in 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
ConsentiCertificatoServerAutoFirmato 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
riferimentoDiArchiviazione Riferimento al servizio collegato dell’account di archiviazione usato per la gestione temporanea dei dati nel flusso di dati di mapping. Questa operazione è necessaria solo quando si usa il servizio collegato ad Hive nel flusso di dati di mapping NO

Esempio:

{
    "name": "HiveLinkedService",
    "properties": {
        "type": "Hive",
        "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 Hive.

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

Proprietà Descrizione Richiesto
tipo La proprietà type del set di dati deve essere impostata su: HiveObject
schema Nome dello schema. No (se nell'origine dell'attività è specificato "query")
tabella Nome della tabella. No (se nell'origine dell'attività è specificato "query")
nomeTabella Nome della tabella che include la parte dello 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": "HiveDataset",
    "properties": {
        "type": "HiveObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Hive 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 Hive.

HiveSource come origine

Per copiare dati da Hive, impostare il tipo di origine nell'attività di copia su HiveSource. 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 HiveSource
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": "CopyFromHive",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Hive input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "HiveSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Proprietà del flusso di dati per mapping

Il connettore Hive è supportato come origine del set di dati inline nei flussi di dati di mapping. Leggere usando una query o direttamente da una tabella Hive in HDInsight. I dati Hive vengono gestiti temporaneamente in un account di archiviazione come file Parquet prima di essere trasformati come parte di un flusso di dati.

Proprietà di origine

La tabella seguente elenca le proprietà supportate da un’origine Hive. È possibile modificare queste proprietà nella scheda Opzioni origine.

Nome Descrizione Richiesto Valori consentiti Proprietà script del flusso di dati
Negozio L’archivio deve essere hive hive negozio
Formato Se si esegue la lettura da una tabella o una query table oppure query formato
Nome schema Se si legge da una tabella, lo schema della tabella di origine Sì, se il formato è table Stringa schemaName
Nome tabella Se si legge da una tabella, il nome della tabella Sì, se il formato è table Stringa nomeTabella
Quesito Se il formato è query, la query di origine nel servizio collegato ad Hive Sì, se il formato è query Stringa quesito
Con gestione temporanea La tabella Hive sarà sempre gestita temporaneamente. true Messo in scena
Contenitore di archiviazione Contenitore di archiviazione usato per gestire temporaneamente i dati prima di leggere o scrivere in Hive. Il cluster Hive deve avere accesso a questo contenitore. Stringa contenitore di archiviazione
Database dell’area di gestione temporanea Schema/Database a cui l’account utente specificato nel servizio collegato ha accesso. Viene usato per creare tabelle esterne durante la gestione temporanea ed eliminato successivamente No true oppure false stagingDatabaseName
Script pre-SQL Codice SQL da eseguire nella tabella Hive prima di leggere i dati No Stringa preSQLs

Esempio di origine

Di seguito è riportato un esempio di configurazione di origine Hive:

Esempio di origine Hive

Queste impostazioni si traducono nello script del flusso di dati seguente:

source(
    allowSchemaDrift: true,
    validateSchema: false,
    ignoreNoFilesFound: false,
    format: 'table',
    store: 'hive',
    schemaName: 'default',
    tableName: 'hivesampletable',
    staged: true,
    storageContainer: 'khive',
    storageFolderPath: '',
    stagingDatabaseName: 'default') ~> hivesource

Limitazioni note

  • I tipi complessi, ad esempio matrici, mappe, struct e unioni non sono supportati per la lettura.
  • Il connettore Hive supporta solo tabelle Hive in Azure HDInsight versione 4.0 o successiva (Apache Hive 3.1.0)
  • Per impostazione predefinita, il driver Hive fornisce “tableName.columnName” nel sink. Se non si vuole visualizzare il nome della tabella nel nome della colonna, esistono due modi per risolvere il problema. a) Controllare l’impostazione “hive.resultset.use.unique.column.names” a lato server di Hive e impostarla su false. b. Usare il mapping delle colonne per rinominare il nome della colonna.

Mapping dei tipi di dati per Hive

Quando si copiano dati da e verso Hive, vengono usate le mappature dei tipi di dati provvisorie seguenti all'interno del servizio. 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 Hive Tipo di dati del servizio provvisorio (per la versione 2.0 (anteprima)) Tipo di dati del servizio provvisorio (per la versione 1.0)
TINYINT Sbyte Int16
SMALLINT Int16 Int16
INT Int32 Int32
BIGINT Int32 Int64
BOOLEANO Booleano Booleano
Galleggiare Singola Singola
DOPPIO Doppio Doppio
DECIMALE Decimale Decimale
filo Stringa Stringa
VARCHAR Stringa Stringa
CHAR Stringa Stringa
TIMESTAMP DateTimeOffset (struttura per gestire data e ora con fuso orario) Data e ora
DATTERO Data e ora Data e ora
BINARIO Byte[] Byte[]
ARRAY Stringa Stringa
MAPPA Stringa Stringa
STRUTTURA Stringa Stringa

Proprietà dell'attività Lookup

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

Aggiornare il connettore Hive

Ecco i passaggi che consentono di aggiornare il connettore Hive:

  1. Nella pagina Modifica servizio collegato selezionare la versione 2.0 (anteprima) 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 Hive versione 2.0 (anteprima) è 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 Hive.

Differenze tra Hive versione 2.0 (anteprima) e versione 1.0

Il connettore Hive versione 2.0 (anteprima) 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 (anteprima) e la versione 1.0.

Versione 2.0 (anteprima) Versione 1.0
L'uso di ';' per separare più host (solo quando serviceDiscoveryMode è abilitato) non è supportato. L'uso di ';' per separare più host (solo quando serviceDiscoveryMode è abilitato) è supportato.
HiveServer1 e HiveThriftServer non sono supportati per ServerType. Viene offerto supporto per HiveServer1 e HiveThriftServer su ServerType.
Il tipo di autenticazione del nome utente non è supportato.

Il protocollo di trasporto SASL supporta solo il tipo di autenticazione UsernameAndPassword. Il protocollo di trasporto binario supporta solo il tipo di autenticazione anonima.
Supporta il tipo di autenticazione basato su nome utente.

I protocolli di trasporto SASL e Binary supportano i tipi di autenticazione Anonymous, Username, UsernameAndPassword e WindowsAzureHDInsightService.
serviceDiscoveryModee zooKeeperNameSpaceuseNativeQuery non sono supportati. serviceDiscoveryMode, zooKeeperNameSpace e useNativeQuery sono supportati.
Il valore predefinito di enableSSL è true. trustedCertPath useSystemTrustStore, allowHostNameCNMismatche allowSelfSignedServerCert non sono supportati.

enableServerCertificateValidation è supportato.
Il valore predefinito di enableSSL è false. trustedCertPath useSystemTrustStore, allowHostNameCNMismatche allowSelfSignedServerCert sono supportati.

enableServerCertificateValidation non è supportato.
I seguenti mapping sono usati dai tipi di dati di Hive al tipo di dati di servizio provvisorio.

TINYINT -> SByte
TIMESTAMP -> DateTimeOffset
I seguenti mapping sono usati dai tipi di dati di Hive al tipo di dati di servizio provvisorio.

TINYINT -> Int16
TIMESTAMP -> Data e ora

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