Använda Apache Sqoop för att importera och exportera data mellan Apache Hadoop i HDInsight och Azure SQL Database

Lär dig hur du använder Apache Sqoop för att importera och exportera mellan ett Apache Hadoop-kluster i Azure HDInsight och Azure SQL Database eller Microsoft SQL Server. Stegen i det här dokumentet använder sqoop kommandot direkt från huvudnoden i Hadoop-klustret. Du använder SSH för att ansluta till huvudnoden och köra kommandona i det här dokumentet. Den här artikeln är en fortsättning på Använda Apache Sqoop med Hadoop i HDInsight.

Förutsättningar

Konfigurera

  1. Använd ssh-kommandot för att ansluta till klustret. Redigera kommandot nedan genom att ersätta CLUSTERNAME med namnet på klustret och ange sedan kommandot:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Ange variabler för enkel användning. Ersätt PASSWORD, MYSQLSERVERoch MYDATABASE med relevanta värden och ange sedan kommandona nedan:

    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"
    

Sqoop-export

Från Hive till SQL.

  1. Kontrollera att Sqoop kan se databasen genom att ange kommandot nedan i din öppna SSH-anslutning. Det här kommandot returnerar en lista över databaser.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Ange följande kommando för att se en lista med tabeller för den angivna databasen:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Om du vill exportera data från Hive-tabellen hivesampletable till mobiledata tabellen i databasen anger du kommandot nedan i din öppna SSH-anslutning:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. Kontrollera att data har exporterats genom att använda följande frågor från din SSH-anslutning för att visa exporterade data:

    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)"
    

Sqoop-import

Från SQL till Azure Storage.

  1. Ange kommandot nedan i din öppna SSH-anslutning för att importera data från mobiledata tabellen i SQL till wasbs:///tutorials/usesqoop/importeddata katalogen i HDInsight. Fälten i data avgränsas med ett fliktecken och raderna avslutas med ett nytt radtecken.

    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. Du kan också ange en Hive-tabell:

    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. När importen har slutförts anger du följande kommando i den öppna SSH-anslutningen för att visa en lista över data i den nya katalogen:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Använd beeline för att kontrollera att tabellen har skapats i Hive.

    1. Anslut

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Kör varje fråga under en i taget och granska utdata:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. Avsluta beeline med !exit.

Begränsningar

  • Massexport – Med Linux-baserade HDInsight stöder inte Sqoop-anslutningsappen som används för att exportera data till SQL massinfogningar.

  • Batchbearbetning – Med Linux-baserad HDInsight gör Sqoop flera infogningar i stället för att batcha infogningsåtgärderna när du använder växeln -batch när du utför infogningar.

Viktigt!

Nästa steg

Nu har du lärt dig hur du använder Sqoop. Mer information finns i: