HDInsight üzerinde Apache Hadoop ile Azure SQL Veritabanı arasında verileri içeri ve dışarı aktarmak için Apache Sqoop kullanma

Azure HDInsight'ta Apache Hadoop kümesi ile Azure SQL Veritabanı veya Microsoft SQL Server arasında içeri ve dışarı aktarmak için Apache Sqoop kullanmayı öğrenin. Bu belgedeki adımlar, komutunu doğrudan Hadoop kümesinin baş düğümünden kullanır sqoop . SSH kullanarak baş düğüme bağlanır ve bu belgedeki komutları çalıştırırsınız. Bu makale, HDInsight'ta Hadoop ile Apache Sqoop kullanma makalesinin devamıdır.

Önkoşullar

Ayarlama

  1. Kümenize bağlanmak için ssh komutunu kullanın. CLUSTERNAME değerini kümenizin adıyla değiştirerek aşağıdaki komutu düzenleyin ve komutunu girin:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Kullanım kolaylığı için değişkenleri ayarlayın. , MYSQLSERVERve MYDATABASE değerlerini ilgili değerlerle değiştirin PASSWORDve aşağıdaki komutları girin:

    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 dışarı aktarma

Hive'dan SQL'e.

  1. Sqoop'un veritabanınızı görebildiğini doğrulamak için açık SSH bağlantınızda aşağıdaki komutu girin. Bu komut, veritabanlarının listesini döndürür.

    sqoop list-databases --connect $SERVER_CONNECT
    
  2. Belirtilen veritabanının tablo listesini görmek için aşağıdaki komutu girin:

    sqoop list-tables --connect $SERVER_DB_CONNECT
    
  3. Hive hivesampletable tablosundaki verileri veritabanınızdaki tabloya aktarmak için mobiledata açık SSH bağlantınızda aşağıdaki komutu girin:

    sqoop export --connect $SERVER_DB_CONNECT \
    -table mobiledata \
    --hcatalog-table hivesampletable
    
  4. Verilerin dışarı aktarıldığını doğrulamak için, dışarı aktarılan verileri görüntülemek için SSH bağlantınızdan aşağıdaki sorguları kullanın:

    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 içeri aktarma

SQL'den Azure depolamaya.

  1. SQL'deki tablodan HDInsight dizinine veri mobiledata aktarmak için wasbs:///tutorials/usesqoop/importeddata açık SSH bağlantınızda aşağıdaki komutu girin. Verilerdeki alanlar sekme karakteriyle ayrılır ve satırlar yeni satır karakteriyle sonlandırılır.

    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. Alternatif olarak, bir Hive tablosu da belirtebilirsiniz:

    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. İçeri aktarma işlemi tamamlandıktan sonra, yeni dizindeki verileri listelemek için açık SSH bağlantınıza aşağıdaki komutu girin:

    hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
    
  4. Tablonun Hive'da oluşturulduğunu doğrulamak için beeline kullanın.

    1. Bağlan

      beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
      
    2. Her sorguyu bir kerede bir sorgunun altında yürüterek çıktıyı gözden geçirin:

      show tables;
      describe mobiledata_imported2;
      SELECT COUNT(*) FROM mobiledata_imported2;
      SELECT * FROM mobiledata_imported2 LIMIT 10;
      
    3. ile !exitbeeline'dan çıkın.

Sınırlamalar

  • Toplu dışarı aktarma - Linux tabanlı HDInsight ile verileri SQL'e aktarmak için kullanılan Sqoop bağlayıcısı toplu eklemeleri desteklemez.

  • Toplu işleme - Linux tabanlı HDInsight ile, eklemeleri gerçekleştirirken anahtarı kullanırken -batch , Sqoop ekleme işlemlerini toplu hale getirmek yerine birden çok ekleme yapar.

Dikkat edilmesi gereken önemli hususlar

Sonraki adımlar

Artık Sqoop'un nasıl kullanılacağını öğrendinsiniz. Daha fazla bilgi edinmek için şu makalelere bakın:

  • HDInsight ile Apache Oozie kullanma: Oozie iş akışında Sqoop eylemini kullanın.
  • HDInsight kullanarak uçuş gecikmesi verilerini analiz etme: Etkileşimli Sorgu'yu kullanarak uçuş gecikmesi verilerini analiz edin ve ardından Sqoop kullanarak verileri Azure'daki bir veritabanına aktarın.
  • HDInsight'a veri yükleme: HDInsight/Azure Blob depolamaya veri yüklemek için başka yöntemler bulun.