Köra Apache Sqoop-jobb i HDInsight med Curl

Lär dig hur du använder Curl för att köra Apache Sqoop-jobb i 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

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 för att SQL Server.

Anteckning

När du använder Curl eller annan REST-kommunikation med WebHCat, måste du autentisera begärandena genom att ange användarnamn och lösenord för HDInsight-klustrets administratör. Du måste också använda klustrets namn 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 USERNAME du 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 genom att använda säker HTTP (HTTPS) för att säkerställa att dina autentiseringsuppgifter skickas på ett säkert sätt till servern.

  1. 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=sqluser
    
  2. Använd följande kommando från en kommandorad för att verifiera att du kan ansluta till ditt HDInsight-kluster:

    curl -u %USERNAME%:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
    

    Du bör få ett svar som liknar följande:

    {"status":"ok","version":"v1"}
    
  3. 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/sqoop
    

    De parametrar som används i det här kommandot är följande:

    • -d – Eftersom -G inte används används standardinställningen för begäran till POST-metoden. -d anger 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 jobbets status skrivs till.

      Det här kommandot returnerar ett jobb-ID som kan användas för att kontrollera jobbets status.

      {"id":"job_1415651640909_0026"}
      
  4. Använd följande kommando för att kontrollera jobbets status. Ersätt JOBID med värdet som returnerades i föregående steg. Om returvärdet till exempel var {"id":"job_1415651640909_0026"}skulle det JOBID vara job_1415651640909_0026. Ändra platsen för jq efter 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.state
    

    Om jobbet har slutförts kommer tillståndet att lyckas.

    Anteckning

    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.

  5. När jobbets tillstånd har ändrats till SUCCEEDED kan du hämta resultatet av jobbet från Azure Blob Storage. Parametern statusdir som skickas med frågan innehåller platsen för utdatafilen. I det här fallet wasb:///example/data/sqoop/curl. Den här adressen lagrar utdata för jobbet i katalogen i example/data/sqoop/curl standardlagringscontainern som används av HDInsight-klustret.

    Du kan använda Azure Portal för att komma åt stderr- och stdout-blobar.

  6. 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-baserade HDInsight stöder Sqoop-anslutningsappen 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 batchkoppla infogningsåtgärderna när du använder växeln -batch när du utför infogningar.

Sammanfattning

Som visas 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 guiden för Apache Sqoop REST API.

Nästa steg

Använda Apache Sqoop med Apache Hadoop i HDInsight

För andra HDInsight-artiklar som rör curl: