Usare Apache Sqoop con Hadoop in HDInsight
Informazioni su come usare Apache Sqoop in HDInsight per importare ed esportare dati tra un cluster HDInsight e Azure SQL Database.
Anche se Apache Hadoop è una scelta naturale per l'elaborazione di dati non strutturati e semistrutturati, ad esempio log e file, potrebbe anche essere necessario elaborare dati strutturati archiviati in database relazionali.
Apache Sqoop è uno strumento progettato per il trasferimento di dati tra cluster Hadoop e database relazionali. Può essere usato per importare dati in HDFS (Hadoop Distributed File System) da un sistema di gestione di database relazionali (RDBMS), ad esempio SQL Server, MySQL oppure Oracle, trasformare i dati in Hadoop con MapReduce o Apache Hive e quindi esportarli nuovamente in un sistema RDBMS. In questo articolo si usa Azure SQL Database per il database relazionale.
Importante
Questo articolo configura un ambiente di test per eseguire il trasferimento dei dati. Si sceglie quindi un metodo di trasferimento dati per questo ambiente da uno dei metodi della sezione Eseguire processi Sqoop.
Per le versioni di Sqoop supportate nei cluster HDInsight, vedere Novità delle versioni del cluster fornite da HDInsight?
Informazioni sullo scenario
Il cluster HDInsight include alcuni dati di esempio. Usare i due esempi seguenti:
- Un file di log Apache
Log4j
, che si trova in/example/data/sample.log
. Dal file verranno estratti i log seguenti:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
Tabella Hive denominata
hivesampletable
, che fa riferimento al file di dati che si trova in/hive/warehouse/hivesampletable
. La tabella contiene alcuni dati relativi al dispositivo mobile.Campo Tipo di dati clientid string querytime string market string deviceplatform string devicemake string devicemodel string state string country string querydwelltime double sessionid bigint sessionpagevieworder bigint
In questo articolo si usano questi due set di dati per testare l'importazione e l'esportazione di Sqoop.
Configurare l'ambiente di test
Il cluster, il database SQL e altri oggetti vengono creati tramite il portale di Azure usando un modello di Azure Resource Manager. Il modello è disponibile nei modelli di avvio rapido di Azure. Il modello Resource Manager chiama un pacchetto bacpac per distribuire gli schemi di tabella in un database SQL. Se si vuole usare un contenitore privato per i file bacpac, usare i valori seguenti nel modello:
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
Nota
L'importazione tramite un modello o il portale di Azure supporta solo l'importazione di un file BACPAC dall'archiviazione BLOB di Azure.
Selezionare l'immagine seguente per aprire il modello di Resource Manager nel portale di Azure.
Immettere le proprietà seguenti:
Campo Valore Subscription Selezionare la sottoscrizione di Azure dall'elenco a discesa. Resource group Selezionare il gruppo di risorse dall'elenco a discesa oppure crearne uno nuovo Posizione Selezionare un'area dall'elenco a discesa. Cluster Name Immettere un nome per il cluster Hadoop. Usare solo lettere minuscole. Nome utente dell'account di accesso del cluster Mantenere il valore admin
prepopolato .Password di accesso al cluster Immettere una password. Nome utente SSH Mantenere il valore sshuser
prepopolato .Password SSH Immettere una password. Account di accesso sql Amministrazione Mantenere il valore sqluser
prepopolato .Password di SQL Amministrazione Immettere una password. percorso _artifacts Usare il valore predefinito a meno che non si voglia usare il proprio file bacpac in un percorso diverso. token di firma di accesso condiviso percorso _artifacts Lasciare vuoto. Nome file Bacpac Usare il valore predefinito a meno che non si voglia usare il proprio file bacpac. Posizione Usare il valore predefinito. Il nome logico del server SQL è
<ClusterName>dbserver
. Il nome del database è<ClusterName>db
. Il nome predefinito dell'account di archiviazione èe6qhezrh2pdqu
.Selezionare Accetto le condizioni riportate sopra.
Selezionare Acquisto. Viene visualizzato un nuovo riquadro denominato Invio della distribuzione per Distribuzione modello. La creazione del cluster e del database SQL richiede circa 20 minuti.
Eseguire processi Sqoop
HDInsight può eseguire processi Sqoop usando vari metodi. Usare la tabella seguente per decidere il metodo più adatto alle proprie esigenze, quindi fare clic sul collegamento per visualizzare una procedura dettagliata.
Usare questo se si desidera... | ...una shell interattiva | ... elaborazione batch | ...da questo sistema operativo client |
---|---|---|---|
SSH | ? | ? | Linux, Unix, Mac OS X o Windows |
.NET SDK per Hadoop | ? | Windows (per ora) | |
Azure PowerShell | ? | Windows |
Limitazioni
- Esportazione in blocco: con HDInsight basato su Linux, il connettore Sqoop usato per esportare i dati in Microsoft SQL Server o database SQL attualmente non supporta gli inserimenti bulk.
- Invio in batch: con HDInsight basato su Linux, quando si usa il comando
-batch
durante gli inserimenti, Sqoop esegue più inserimenti invece di suddividere in batch le operazioni di inserimento.
Passaggi successivi
In questa esercitazione si è appreso come usare Sqoop. Per altre informazioni, vedere:
- Usare Apache Hive con HDInsight
- Caricare i dati in HDInsight: per altri metodi per il caricamento di file in HDInsight o nell'archiviazione BLOB di Azure.
- Usare Apache Sqoop per importare ed esportare dati tra Apache Hadoop su HDInsight e un database SQL
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per