Executar tarefas do Apache Sqoop com o SDK .NET para Apache Hadoop no HDInsight
Saiba como utilizar o SDK .NET do Azure HDInsight para executar tarefas do Apache Sqoop no HDInsight para importar e exportar entre um cluster do HDInsight e uma Base de Dados do SQL do Azure ou SQL Server base de dados.
Pré-requisitos
Conclusão de Configurar o ambiente de teste a partir de Utilizar o Apache Sqoop com o Hadoop no HDInsight.
Familiaridade com o Sqoop. Para obter mais informações, veja Guia de Utilizador do Sqoop.
Utilizar o Sqoop em clusters do HDInsight com o SDK .NET
O SDK .NET do HDInsight fornece bibliotecas de cliente .NET, para que seja mais fácil trabalhar com clusters do HDInsight a partir do .NET. Nesta secção, vai criar uma aplicação de consola C# para exportar a hivesampletable
para a tabela base de dados SQL do Azure que criou a partir dos pré-requisitos.
Configurar
Inicie o Visual Studio e crie uma aplicação de consola C#.
Navegue para Ferramentas>Consola do> Gestor dePacotes do Gestor de Pacotes NuGete execute o seguinte comando:
Install-Package Microsoft.Azure.Management.HDInsight.Job
Exportação do Sqoop
Do Hive ao SQL Server. Este exemplo exporta dados da tabela do Hive hivesampletable
para a mobiledata
tabela no Base de Dados SQL.
Utilize o seguinte código no ficheiro Program.cs. Edite o código para definir os valores para
ExistingClusterName
eExistingClusterPassword
.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 ExistingClusterPassword = "<Cluster User Password>"; private const string ExistingClusterUri = ExistingClusterName + ".azurehdinsight.net"; private const string ExistingClusterUsername = "admin"; 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); SubmitSqoopJob(); System.Console.WriteLine("Press ENTER to continue ..."); System.Console.ReadLine(); } private static void SubmitSqoopJob() { var sqlDatabaseServerName = ExistingClusterName + "dbserver"; var sqlDatabaseLogin = "sqluser"; var sqlDatabaseLoginPassword = ExistingClusterPassword; var sqlDatabaseDatabaseName = ExistingClusterName + "db"; // Connection string for using Azure SQL Database; Comment if using SQL Server var connectionString = "jdbc:sqlserver://" + sqlDatabaseServerName + ".database.windows.net;user=" + sqlDatabaseLogin + "@" + sqlDatabaseServerName + ";password=" + sqlDatabaseLoginPassword + ";database=" + sqlDatabaseDatabaseName; // Connection string for using SQL Server; Uncomment if using SQL Server // var connectionString = "jdbc:sqlserver://" + sqlDatabaseServerName + ";user=" + sqlDatabaseLogin + ";password=" + sqlDatabaseLoginPassword + ";database=" + sqlDatabaseDatabaseName; //sqoop start var tableName = "mobiledata"; var parameters = new SqoopJobSubmissionParameters { Command = "export --connect " + connectionString + " --table " + tableName + " --hcatalog-table hivesampletable" }; //sqoop end System.Console.WriteLine("Submitting the Sqoop job to the cluster..."); var response = _hdiJobManagementClient.JobManagement.SubmitSqoopJob(parameters); System.Console.WriteLine("Validating that the response is as expected..."); System.Console.WriteLine("Response status code is " + response.StatusCode); System.Console.WriteLine("Validating the response object..."); System.Console.WriteLine("JobId is " + response.JobSubmissionJsonResponse.Id); } } }
Para executar o programa, selecione a tecla F5 .
Importação do Sqoop
Do SQL Server ao Armazenamento do Azure. Este exemplo depende da exportação acima ter sido executada. Este exemplo importa dados da mobiledata
tabela no Base de Dados SQL para o wasb:///tutorials/usesqoop/importeddata
diretório na Conta de Armazenamento predefinida do cluster.
Substitua o código acima no
//sqoop start //sqoop end
bloco pelo seguinte código:var tableName = "mobiledata"; var exportDir = "/tutorials/usesqoop/importeddata"; var parameters = new SqoopJobSubmissionParameters { Command = "import --connect " + connectionString + " --table " + tableName + " --target-dir " + exportDir + " --fields-terminated-by \\t --lines-terminated-by \\n -m 1" };
Para executar o programa, selecione a tecla F5 .
Limitações
O HDInsight baseado em Linux apresenta as seguintes limitações:
Exportação em massa: o conector sqoop utilizado para exportar dados para o Microsoft SQL Server ou a Base de Dados SQL do Azure não suporta atualmente inserções em massa.
Criação de batches: ao utilizar o comutador, o
-batch
Sqoop executa várias inserções em vez de criar em lote as operações de inserção.
Passos seguintes
Agora aprendeu a utilizar o Sqoop. Para saber mais, veja:
- Utilizar o Apache Oozie com o HDInsight: utilize a ação do Sqoop num fluxo de trabalho do Oozie.
- Carregar dados para o HDInsight: localize outros métodos para carregar dados para o ARMAZENAMENTO de Blobs do HDInsight ou do Azure.