Delen via


Apache Sqoop gebruiken om gegevens te importeren en te exporteren tussen Apache Hadoop in HDInsight en Azure SQL Database

Meer informatie over het gebruik van Apache Sqoop om te importeren en exporteren tussen een Apache Hadoop-cluster in Azure HDInsight en Azure SQL Database of Microsoft SQL Server. In de stappen in dit document wordt de sqoop opdracht rechtstreeks vanuit het hoofdknooppunt van het Hadoop-cluster gebruikt. U gebruikt SSH om verbinding te maken met het hoofdknooppunt en de opdrachten in dit document uit te voeren. Dit artikel is een vervolg van Apache Sqoop gebruiken met Hadoop in HDInsight.

Vereisten

Instellingen

  1. Gebruik de ssh-opdracht om verbinding te maken met uw cluster. Bewerk de onderstaande opdracht door CLUSTERNAME te vervangen door de naam van uw cluster. Voer vervolgens deze opdracht in:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Stel variabelen in voor gebruiksgemak. Vervang, MYSQLSERVERen MYDATABASE door PASSWORDde relevante waarden en voer de onderstaande opdrachten in:

    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

Van Hive naar SQL.

  1. Als u wilt controleren of Sqoop uw database kan zien, voert u de onderstaande opdracht in uw geopende SSH-verbinding in. Met deze opdracht wordt een lijst met databases geretourneerd.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Voer de volgende opdracht in om een lijst met tabellen voor de opgegeven database weer te geven:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Als u gegevens uit de Hive-tabel hivesampletable wilt exporteren naar de mobiledata tabel in uw database, voert u de onderstaande opdracht in uw open SSH-verbinding in:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. Als u wilt controleren of gegevens zijn geëxporteerd, gebruikt u de volgende query's vanuit uw SSH-verbinding om de geëxporteerde gegevens weer te geven:

    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 importeren

Van SQL naar Azure Storage.

  1. Voer de onderstaande opdracht in uw geopende SSH-verbinding in om gegevens uit de mobiledata tabel in SQL te importeren in de wasbs:///tutorials/usesqoop/importeddata map in HDInsight. De velden in de gegevens worden gescheiden door een tabteken en de regels worden beëindigd door een nieuw regelteken.

    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. U kunt ook een Hive-tabel opgeven:

    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. Nadat het importeren is voltooid, voert u de volgende opdracht in uw geopende SSH-verbinding in om de gegevens in de nieuwe map weer te geven:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Gebruik beeline om te controleren of de tabel is gemaakt in Hive.

    1. Verbinden

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Voer elke query één voor één uit en controleer de uitvoer:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. Sluit beeline af met !exit.

Beperkingen

  • Bulkexport: met HDInsight op basis van Linux biedt de Sqoop-connector die wordt gebruikt voor het exporteren van gegevens naar SQL geen ondersteuning voor bulkinvoegingen.

  • Batching: met HDInsight op basis van Linux, maakt -batch Sqoop meerdere invoegingen in plaats van de invoegbewerkingen in batches te plaatsen.

Belangrijke aandachtspunten

  • Zowel HDInsight als SQL Server moeten zich in hetzelfde virtuele Azure-netwerk bevinden.

    Zie HdInsight verbinden met uw on-premises netwerkdocument voor een voorbeeld.

    Zie voor meer informatie over het gebruik van HDInsight met een virtueel Azure-netwerk het document HDInsight uitbreiden met Azure Virtual Network. Zie het document Virtual Network Overview (Overzicht van virtueel netwerk) voor meer informatie over Azure Virtual Network.

  • SQL Server moet worden geconfigureerd om SQL-verificatie toe te staan. Zie het document Een verificatiemodus kiezen voor meer informatie.

  • Mogelijk moet u SQL Server configureren om externe verbindingen te accepteren.

Volgende stappen

U hebt nu geleerd hoe u Sqoop gebruikt. Raadpleeg voor meer informatie: