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.

  1. Selezionare l'immagine seguente per aprire un modello di Resource Manager nel portale di Azure.

    Pulsante Distribuisci in Azure per il nuovo cluster

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

  3. Selezionare Accetto le condizioni riportate sopra.

  4. 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: