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 un database SQL di Azure.
Benché Apache Hadoop rappresenti una scelta ottimale per l'elaborazione di dati non strutturati e semi strutturati, ad esempio log e file, potrebbe essere necessario elaborare anche 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, viene usato il database SQL di Azure per il database relazionale.
Importante
Questo articolo configura un ambiente di testing per eseguire il trasferimento dei dati. Si sceglie quindi un metodo di trasferimento dati per questo ambiente da uno dei metodi presenti nella sezione Eseguire processi Sqoop.
Per informazioni sulle versioni di Sqoop supportate nei cluster HDInsight, vedere l'articolo relativo alle novità delle versioni cluster incluse in 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, vengono usati due set di dati per testare l'importazione e l'esportazione di Sqoop.
Configurare un 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 tra i modelli di avvio rapido di Azure. Il modello di Resource Manager chiama un pacchetto bacpac per distribuire gli schemi della 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 un modello di Resource Manager nel portale di Azure.
Immetti le proprietà seguenti:
Campo Valore Subscription Selezionare la sottoscrizione di Azure nell'elenco a discesa. Gruppo di risorse Selezionare il gruppo di risorse dall'elenco a discesa, oppure crearne uno nuovo Ufficio Selezionare un'area dall'elenco a discesa. Nome del cluster Immettere un nome per il cluster Hadoop. Usare solo lettere minuscole. Nome utente per l'accesso al cluster Mantenere il valore prepopolato admin
.Password di accesso al cluster Immettere una password. Nome utente SSH Mantenere il valore prepopolato sshuser
.Password SSH Immettere una password. Accesso amministratore SQL Mantenere il valore prepopolato sqluser
.Password amministratore SQL Immettere una password. _artifacts Location (Posizione elementi) Usare il valore predefinito, a meno che non si voglia usare un file BACPAC in una posizione diversa. _artefatti Posizione token SAS Lasciare vuoto. Nome File Bacpac Usare il valore predefinito, a meno che non si voglia usare un proprio file BACPAC. Ufficio Usa il valore predefinito. Il nome logico del server SQL è
<ClusterName>dbserver
. Il nome del database è<ClusterName>db
. Il nome dell'account di archiviazione predefinito èe6qhezrh2pdqu
.Selezionare Accetto le condizioni riportate sopra.
Selezionare Acquista. 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 è in grado di eseguire processi Sqoop in vari modi. 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 | ...elaborazionebatch | ...da questo sistema operativo client |
---|---|---|---|
SSH | ? | ? | Linux, Unix, macOS X o Windows |
.NET SDK per Hadoop | ? | Windows (per ora) | |
Azure PowerShell | ? | Finestre |
Limiti
- Esportazione di massa: con HDInsight basato su Linux, il connettore Sqoop, usato per esportare dati a Microsoft SQL Server o al database SQL, non supporta al momento inserimenti di massa.
- 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