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 skickar Apache Hive-frågor med HDInsight .NET SDK. Du skriver ett C#-program för att skicka en Hive-fråga för att visa Hive-tabeller och visa resultatet.
Anmärkning
Stegen i den här artikeln måste utföras från en Windows-klient. Information om hur du använder en Linux-, OS X- eller Unix-klient för att arbeta med Hive finns i flikväljaren som visas överst i artikeln.
Förutsättningar
Innan du börjar den här artikeln måste du ha följande:
Ett Apache Hadoop-kluster i HDInsight. Se Kom igång med Linux-baserade Hadoop i HDInsight.
Viktigt!
Från och med den 15 september 2017 har HDInsight .NET SDK endast stöd för att returnera Hive-frågeresultat från Azure Storage-konton. Om du använder det här exemplet med ett HDInsight-kluster som använder Azure Data Lake Storage som primär lagring kan du inte hämta sökresultat med hjälp av .NET SDK.
Visual Studio 2013 och senare. Minst arbetsbelastningen .NET-skrivbordsutveckling bör vara installerad.
Kör en Hive-fråga
HDInsight .NET SDK tillhandahåller .NET-klientbibliotek, vilket gör det enklare att arbeta med HDInsight-kluster från .NET.
Skapa ett C#-konsolprogram i Visual Studio.
Kör följande kommando från Nuget Package Manager-konsolen:
Install-Package Microsoft.Azure.Management.HDInsight.JobRedigera koden nedan för att initiera värdena för variabler:
ExistingClusterName, ExistingClusterUsername, ExistingClusterPassword,DefaultStorageAccountName,DefaultStorageAccountKey,DefaultStorageContainerName. Använd sedan den reviderade koden som hela innehållet i Program.cs i Visual Studio.using System.Collections.Generic; using System.IO; using System.Text; using System.Threading; using Microsoft.Azure.Management.HDInsight.Job; using Microsoft.Azure.Management.HDInsight.Job.Models; using Hyak.Common; namespace SubmitHDInsightJobDotNet { class Program { private static HDInsightJobManagementClient _hdiJobManagementClient; private const string ExistingClusterName = "<Your HDInsight Cluster Name>"; private const string ExistingClusterUsername = "<Cluster Username>"; private const string ExistingClusterPassword = "<Cluster User Password>"; // Only Azure Storage accounts are supported by the SDK private const string DefaultStorageAccountName = "<Default Storage Account Name>"; private const string DefaultStorageAccountKey = "<Default Storage Account Key>"; private const string DefaultStorageContainerName = "<Default Blob Container Name>"; private const string ExistingClusterUri = ExistingClusterName + ".azurehdinsight.net"; static void Main(string[] args) { System.Console.WriteLine("The application is running ..."); var clusterCredentials = new BasicAuthenticationCloudCredentials { Username = ExistingClusterUsername, Password = ExistingClusterPassword }; _hdiJobManagementClient = new HDInsightJobManagementClient(ExistingClusterUri, clusterCredentials); SubmitHiveJob(); System.Console.WriteLine("Press ENTER to continue ..."); System.Console.ReadLine(); } private static void SubmitHiveJob() { Dictionary<string, string> defines = new Dictionary<string, string> { { "hive.execution.engine", "tez" }, { "hive.exec.reducers.max", "1" } }; List<string> args = new List<string> { { "argA" }, { "argB" } }; var parameters = new HiveJobSubmissionParameters { Query = "SHOW TABLES", Defines = defines, Arguments = args }; System.Console.WriteLine("Submitting the Hive job to the cluster..."); var jobResponse = _hdiJobManagementClient.JobManagement.SubmitHiveJob(parameters); var jobId = jobResponse.JobSubmissionJsonResponse.Id; System.Console.WriteLine("Response status code is " + jobResponse.StatusCode); System.Console.WriteLine("JobId is " + jobId); System.Console.WriteLine("Waiting for the job completion ..."); // Wait for job completion var jobDetail = _hdiJobManagementClient.JobManagement.GetJob(jobId).JobDetail; while (!jobDetail.Status.JobComplete) { Thread.Sleep(1000); jobDetail = _hdiJobManagementClient.JobManagement.GetJob(jobId).JobDetail; } // Get job output var storageAccess = new AzureStorageAccess(DefaultStorageAccountName, DefaultStorageAccountKey, DefaultStorageContainerName); var output = (jobDetail.ExitValue == 0) ? _hdiJobManagementClient.JobManagement.GetJobOutput(jobId, storageAccess) // fetch stdout output in case of success : _hdiJobManagementClient.JobManagement.GetJobErrorLogs(jobId, storageAccess); // fetch stderr output in case of failure System.Console.WriteLine("Job output is: "); using (var reader = new StreamReader(output, Encoding.UTF8)) { string value = reader.ReadToEnd(); System.Console.WriteLine(value); } } } }Tryck på F5 för att köra programmet.
Programmets utdata bör likna:
Nästa steg
I den här artikeln har du lärt dig hur du skickar Apache Hive-frågor med HDInsight .NET SDK. Mer information finns i följande artiklar: