Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du använder Curl för att köra Apache Sqoop-jobb på ett Apache Hadoop-kluster i HDInsight. Den här artikeln visar hur du exporterar data från Azure Storage och importerar dem till en SQL Server-databas med curl. Den här artikeln är en fortsättning på Använda Apache Sqoop med Hadoop i HDInsight.
Curl används för att visa hur du kan interagera med HDInsight med hjälp av råa HTTP-begäranden för att köra, övervaka och hämta resultatet av Sqoop-jobb. Detta fungerar med hjälp av WebHCat REST API (tidigare känt som Templeton) som tillhandahålls av ditt HDInsight-kluster.
Förutsättningar
Slutför konfigurationen av testmiljön från Använd Apache Sqoop med Hadoop i HDInsight.
En klient för att fråga Azure SQL-databasen. Överväg att använda SQL Server Management Studio eller Visual Studio Code.
Curl. Curl är ett verktyg för att överföra data från eller till ett HDInsight-kluster.
jq. Jq-verktyget används för att bearbeta JSON-data som returneras från REST-begäranden.
Kunskaper om Sqoop. Mer information finns i Användarhandbok för Sqoop.
Skicka Apache Sqoop-jobb med hjälp av Curl
Använd Curl för att exportera data med Apache Sqoop-jobb från Azure Storage till SQL Server.
Anmärkning
När du använder Curl eller någon annan REST-kommunikation med WebHCat måste du autentisera begäranden genom att ange användarnamnet och lösenordet för HDInsight-klusteradministratören. Du måste också använda klusternamnet som en del av den URI (Uniform Resource Identifier) som används för att skicka begäranden till servern.
För kommandona i det här avsnittet ersätter du USERNAME med användaren för att autentisera till klustret och ersätter PASSWORD med lösenordet för användarkontot. Ersätt CLUSTERNAME med namnet på klustret.
REST API skyddas via grundläggande autentisering. Du bör alltid göra begäranden med säker HTTP (HTTPS) för att säkerställa att dina autentiseringsuppgifter skickas säkert till servern.
För enkel användning anger du variablerna nedan. Det här exemplet baseras på en Windows-miljö och revideras efter behov för din miljö.
set CLUSTERNAME= set USERNAME=admin set PASSWORD= set SQLDATABASESERVERNAME= set SQLDATABASENAME= set SQLPASSWORD= set SQLUSER=sqluserFrån en kommandorad använder du följande kommando för att kontrollera att du kan ansluta till ditt HDInsight-kluster:
curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusDu bör få ett svar som liknar följande:
{"status":"ok","version":"v1"}Använd följande för att skicka ett sqoop-jobb:
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/sqoopDe parametrar som används i det här kommandot är följande:
-d – Eftersom
-Ginte används används standardinställningen för begäran till POST-metoden.-danger de datavärden som skickas med begäran.user.name – Den användare som kör kommandot.
command – Sqoop-kommandot som ska köras.
statusdir – den katalog som statusen för det här jobbet kommer att skrivas till.
Det här kommandot returnerar ett jobb-ID som kan användas för att kontrollera jobbets status.
{"id":"job_1415651640909_0026"}
Om du vill kontrollera jobbets status använder du följande kommando. Ersätt
JOBIDmed värdet som returnerades i föregående steg. Om returvärdet till exempel var{"id":"job_1415651640909_0026"}skulle detJOBIDvarajob_1415651640909_0026. Ändra platsen förjqefter behov.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.stateOm jobbet har avslutats kommer tillståndet att vara SUCCEEDED.
Anmärkning
Den här Curl-begäran returnerar ett JSON-dokument (JavaScript Object Notation) med information om jobbet. jq används för att endast hämta tillståndsvärdet.
När jobbets tillstånd har ändrats till SUCCEEDED kan du hämta resultatet av jobbet från Azure Blob Storage. Parametern
statusdirsom skickades med frågan innehåller platsen för utdatafilen. I det här falletwasb:///example/data/sqoop/curl. Den här adressen lagrar utdata från jobbet i katalogen iexample/data/sqoop/curlstandardlagringscontainern som används av HDInsight-klustret.Du kan använda Azure-portalen för att komma åt stderr- och stdout-blobar.
Kontrollera att data har exporterats genom att använda följande frågor från SQL-klienten för att visa exporterade data:
SELECT COUNT(*) FROM [dbo].[log4jlogs] WITH (NOLOCK); SELECT TOP(25) * FROM [dbo].[log4jlogs] WITH (NOLOCK);
Begränsningar
- Massexport – Med Linux-baserad HDInsight stöder Sqoop-anslutningen som används för att exportera data till Microsoft SQL Server eller Azure SQL Database för närvarande inte massinfogningar.
- Batchbearbetning – Med Linux-baserad HDInsight utför Sqoop flera infogningar i stället för att batcha infogningsåtgärderna när du använder växeln
-batchnär du utför infogningar.
Sammanfattning
Som du ser i det här dokumentet kan du använda en rå HTTP-begäran för att köra, övervaka och visa resultatet av Sqoop-jobb i HDInsight-klustret.
Mer information om REST-gränssnittet som används i den här artikeln finns i apache Sqoop REST API-guiden.
Nästa steg
Använda Apache Sqoop med Apache Hadoop i HDInsight
För andra HDInsight-artiklar som rör curl: