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
HDInsight'ta Hadoop ile Apache Sqoop kullanma bölümünden Test ortamı ayarlama işlemi tamamlandı.
Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma.
Sqoop hakkında bilgi. Daha fazla bilgi için bkz . Sqoop Kullanıcı Kılavuzu.
Ayarlama
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
Kullanım kolaylığı için değişkenleri ayarlayın. ,
MYSQLSERVER
veMYDATABASE
değerlerini ilgili değerlerle değiştirinPASSWORD
ve 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.
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
Belirtilen veritabanının tablo listesini görmek için aşağıdaki komutu girin:
sqoop list-tables --connect $SERVER_DB_CONNECT
Hive
hivesampletable
tablosundaki verileri veritabanınızdaki tabloya aktarmak içinmobiledata
açık SSH bağlantınızda aşağıdaki komutu girin:sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
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.
SQL'deki tablodan HDInsight dizinine veri
mobiledata
aktarmak içinwasbs:///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
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
İç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
Tablonun Hive'da oluşturulduğunu doğrulamak için beeline kullanın.
Bağlan
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
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;
ile
!exit
beeline'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
Hem HDInsight hem de SQL Server aynı Azure Sanal Ağ üzerinde olmalıdır.
Örneğin, hdInsight'ı şirket içi ağınızın Bağlan belgesine bakın.
HDInsight'ı Azure Sanal Ağ ile kullanma hakkında daha fazla bilgi için HDInsight'ı Azure Sanal Ağ ile genişletme belgesine bakın. Azure Sanal Ağ hakkında daha fazla bilgi için Sanal Ağ Genel Bakış belgesine bakın.
SQL Server, SQL kimlik doğrulamasına izin verecek şekilde yapılandırılmalıdır. Daha fazla bilgi için Kimlik Doğrulama Modu Seçme belgesine bakın.
UZAK bağlantıları kabul etmek için SQL Server'ı yapılandırmanız gerekebilir. Daha fazla bilgi için SQL Server veritabanı altyapısına bağlanma sorunlarını giderme belgesine bakın.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin