Use Apache Sqoop para importar y exportar datos entre Apache Hadoop en HDInsight y Azure SQL Database.

Aprenda a usar Apache Sqoop para realizar importaciones y exportaciones entre un clúster de Apache Hadoop en Azure HDInsight y Azure SQL Database o Microsoft SQL Server. En los pasos descritos en este documento se usa el comando sqoop directamente desde el nodo principal del clúster de Hadoop. Usaremos SSH para conectarnos al nodo principal y ejecutar los comandos de este documento. Este artículo es una continuación de Uso de Apache Sqoop con Hadoop en HDInsight.

Requisitos previos

Configurar

  1. Use el comando SSH para conectarse al clúster. Modifique el comando siguiente: reemplace CLUSTERNAME por el nombre del clúster y, luego, escriba el comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Para facilitar su uso, establezca variables. Reemplace PASSWORD, MYSQLSERVER y MYDATABASE por los valores pertinentes y, luego, escriba los siguientes comandos:

    export PASSWORD='PASSWORD'
    export SQL_SERVER="MYSQLSERVER"
    export DATABASE="MYDATABASE"
    
    
    export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD"
    export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DABATASE"
    

Exportación de Sqoop

De Hive a SQL.

  1. Para comprobar que Sqoop puede ver la base de datos, escriba el comando siguiente en la conexión SSH abierta. Este comando devuelve una lista de las bases de datos.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Escriba el siguiente comando para ver una lista de tablas de la base de datos especificada:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Para exportar datos de la tabla hivesampletable de Hive a la tabla mobiledata en la base de datos, escriba el comando siguiente en la conexión SSH abierta:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. Para comprobar que los datos se han exportado, use las siguientes consultas desde la conexión SSH para ver los datos exportados:

    sqoop eval --connect $SERVER_DB_CONNECT \
    --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)"
    
    
    sqoop eval --connect $SERVER_DB_CONNECT \
    --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
    

Importación de Sqoop

De SQL a Azure Storage.

  1. Escriba el comando siguiente en la conexión SSH abierta para importar datos desde la tabla mobiledata en SQL al directorio wasbs:///tutorials/usesqoop/importeddata en HDInsight. Los campos de los datos se separan mediante un carácter de tabulación y las líneas terminan con un carácter de nueva línea.

    sqoop import --connect $SERVER_DB_CONNECT \
    --table mobiledata \
    --target-dir 'wasb:///tutorials/usesqoop/importeddata' \
    --fields-terminated-by '\t' \
    --lines-terminated-by '\n' -m 1
    
  2. Como alternativa, también puede especificar una tabla de Hive:

    sqoop import --connect $SERVER_DB_CONNECT \
    --table mobiledata \
    --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \
    --fields-terminated-by '\t' \
    --lines-terminated-by '\n' \
    --create-hive-table \
    --hive-table mobiledata_imported2 \
    --hive-import -m 1
    
  3. Una vez que se complete la importación, escriba el comando siguiente en la conexión SSH abierta para mostrar los datos del directorio nuevo:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Use beeline para comprobar que la tabla se ha creado en Hive.

    1. Conectar

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Ejecute cada una de las siguientes consultas una en una y revise la salida:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. Salga de beeline con !exit.

Limitaciones

  • Exportación masiva: con HDInsight basado en Linux, el conector Sqoop que se usa para exportar datos a SQL no admite inserciones masivas.

  • Procesamiento por lotes: con HDInsight basado en Linux, cuando se usa -batch al realizar inserciones, Sqoop realiza varias inserciones en lugar de procesar por lotes las operaciones de inserción.

Consideraciones importantes

Pasos siguientes

Ahora ya ha aprendido a usar Sqoop. Para obtener más información, consulte: