Curl ile HDInsight'ta Apache Sqoop işlerini çalıştırma
HDInsight'ta Apache Hadoop kümesinde Apache Sqoop işlerini çalıştırmak için Curl kullanmayı öğrenin. Bu makalede Azure Depolama'dan verileri dışarı aktarma ve Curl kullanarak SQL Server veritabanına aktarma işlemleri gösterilmektedir. Bu makale, HDInsight'ta Hadoop ile Apache Sqoop kullanma işleminin devamıdır.
Curl, Sqoop işlerini çalıştırmak, izlemek ve sonuçlarını almak için ham HTTP isteklerini kullanarak HDInsight ile nasıl etkileşim kurabileceğinizi göstermek için kullanılır. Bu, HDInsight kümeniz tarafından sağlanan WebHCat REST API'sini (eski adıyla Templeton) kullanarak çalışır.
Önkoşullar
HDInsight'ta Hadoop ile Apache Sqoop kullanmabölümünden test ortamını ayarlama işlemi tamamlandı.
Azure SQL Veritabanını sorgulamak için bir istemci. SQL Server Management Studio veya Visual Studio Code kullanmayı göz önünde bulundurun.
Kıvrılma. Curl, HDInsight kümesinden veya hdInsight kümesine veri aktarmaya yönelik bir araçtır.
jq. Jq yardımcı programı REST isteklerinden döndürülen JSON verilerini işlemek için kullanılır.
Sqoop hakkında bilgi. Daha fazla bilgi için bkz . Sqoop Kullanıcı Kılavuzu.
Curl kullanarak Apache Sqoop işlerini gönderme
Azure Depolama'dan SQL Server'a Apache Sqoop işlerini kullanarak verileri dışarı aktarmak için Curl kullanın.
Not
Curl’ü veya WebHCat ile başka bir REST iletişimini kullanırken HDInsight küme yöneticisinin kullanıcı adı ve parolasını sağlayarak isteklerin kimliğini doğrulamanız gerekir. Ayrıca, sunucuya istek göndermek için kullanılan Tekdüzen Kaynak Tanımlayıcısı’nın (URI) bir parçası olarak küme adını kullanmanız gerekir.
Bu bölümdeki komutlar için değerini USERNAME
kümede kimlik doğrulaması için kullanıcıyla değiştirin ve değerini kullanıcı hesabının parolası ile değiştirin PASSWORD
.
CLUSTERNAME
değerini kümenizin adıyla değiştirin.
REST API’sinin güvenliği temel kimlik doğrulaması ile sağlanır. Kimlik bilgilerinizin sunucuya güvenli bir şekilde gönderilmesi için istekleri her zaman Güvenli HTTP (HTTPS) kullanarak yapmanız gerekir.
Kullanım kolaylığı için aşağıdaki değişkenleri ayarlayın. Bu örnek bir Windows ortamını temel alır, ortamınız için gerektiği gibi düzeltin.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluser
HDInsight kümenize bağlanabildiğinizi doğrulamak için bir komut satırında aşağıdaki komutu kullanın:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
Aşağıdakine benzer bir yanıt almanız gerekir:
{"status":"ok","version":"v1"}
Sqoop işi göndermek için aşağıdakileri kullanın:
curl -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% -d command="export --connect jdbc:sqlserver://%SQLDATABASESERVERNAME%.database.windows.net;user=%SQLUSER%@%SQLDATABASESERVERNAME%;password=%PASSWORD%;database=%SQLDATABASENAME% --table log4jlogs --export-dir /example/data/sample.log --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/data/sqoop/curl" https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/sqoop
Bu komutta kullanılan parametreler aşağıdaki gibidir:
-d -
-G
Kullanılmadığından, istek varsayılan olarak POST yöntemini kullanır.-d
, istekle birlikte gönderilen veri değerlerini belirtir.user.name - Komutu çalıştıran kullanıcı.
command - Yürütülecek Sqoop komutu.
statusdir - Bu işin durumunun yazılacağı dizin.
Bu komut, işin durumunu denetlemek için kullanılabilecek bir iş kimliği döndürür.
{"id":"job_1415651640909_0026"}
İşin durumunu denetlemek için aşağıdaki komutu kullanın. değerini önceki adımda döndürülen değerle değiştirin
JOBID
. Örneğin, dönüş değeri ise{"id":"job_1415651640909_0026"}
JOBID
olurjob_1415651640909_0026
. konumunu gerektiği gibi düzeltinjq
.set JOBID=job_1415651640909_0026 curl -G -u %USERNAME%:%PASSWORD% -d user.name=%USERNAME% https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | C:\HDI\jq-win64.exe .status.state
İş tamamlandıysa, durum BAŞARILI olur.
Not
Bu Curl isteği, iş hakkında bilgi içeren bir JavaScript Nesne Gösterimi (JSON) belgesi döndürür; jq yalnızca durum değerini almak için kullanılır.
İşin durumu BAŞARILI olarak değiştirildikten sonra, işin sonuçlarını Azure Blob depolamadan alabilirsiniz.
statusdir
Sorgu ile geçirilen parametre, çıktı dosyasının konumunu içerir; bu örnekte,wasb:///example/data/sqoop/curl
. Bu adres, işin çıkışını HDInsight kümeniz tarafından kullanılan varsayılan depolama kapsayıcısında dizinindeexample/data/sqoop/curl
depolar.stderr ve stdout bloblarına erişmek için Azure portal kullanabilirsiniz.
Verilerin dışarı aktarıldığını doğrulamak için, dışarı aktarılan verileri görüntülemek üzere SQL istemcinizden aşağıdaki sorguları kullanın:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
Sınırlamalar
- Toplu dışarı aktarma - Linux tabanlı HDInsight ile verileri Microsoft SQL Server veya Azure SQL Veritabanı'na aktarmak için kullanılan Sqoop bağlayıcısı şu anda toplu eklemeleri desteklemez.
- Toplu işlem - Linux tabanlı HDInsight ile, eklemeleri gerçekleştirirken anahtarı kullanırken
-batch
Sqoop, ekleme işlemlerini toplu olarak çalıştırmak yerine birden çok ekleme gerçekleştirir.
Özet
Bu belgede gösterildiği gibi, HDInsight kümenizdeki Sqoop işlerini çalıştırmak, izlemek ve sonuçlarını görüntülemek için ham bir HTTP isteği kullanabilirsiniz.
Bu makalede kullanılan REST arabirimi hakkında daha fazla bilgi için Apache Sqoop REST API kılavuzuna bakın.
Sonraki adımlar
HDInsight üzerinde Apache Hadoop ile Apache Sqoop kullanma
Curl içeren diğer HDInsight makaleleri için:
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