[英]Mapreduce with C#: Process whole input files
問題:
我正在C#中為HDInsight創建MapReduce應用程序。 我需要處理整個輸入文件。
我了解,Hadoop有兩種方法可以實現此目的:
我不知道如何在HDInsight上使用C#實現任何這些選項。
細節:
我要么
使用Microsoft.Hadoop.MapReduce,並通過hadoop.MapReduceJob.ExecuteJob<MyJob>();
啟動作業hadoop.MapReduceJob.ExecuteJob<MyJob>();
或通過簡單地創建一個控制台應用程序並通過azure powershell啟動它
$mrJobDef = New-AzureHDInsightStreamingMapReduceJobDefinition -JobName MyJob -StatusFolder $mrStatusOutput -Mapper $mrMapper -Reducer $mrReducer -InputPath $mrInput -OutputPath $mrOutput
$mrJobDef.Files.Add($mrMapperFile)
$mrJob = Start-AzureHDInsightJob -Cluster $clusterName -JobDefinition $mrJobDef
兩種方法的解決方案都會有很大幫助。
您可以使用powershell中的-Defines參數設置min_splitsize
$clusterName = "YourClusterName"
$jobConfig = @{ "min_splitsize"="512mb"; "mapred.output.compression.codec"="org.apache.hadoop.io.compress.GzipCodec" }
$myWordCountJob = New-AzureHDInsightMapReduceJobDefinition -JarFile "/example/jars/hadoop-examples.jar" -ClassName "wordcount" -jobName "WordCountJob" -StatusFolder "/MyMRJobs/WordCountJobStatus" -Defines $jobConfig
或在C#中
var mapReduceJob = new MapReduceJobCreateParameters()
{
ClassName = "wordcount", // required
JobName = "MyWordCountJob", //optional
JarFile = "/example/jars/hadoop-examples.jar", // Required, alternative syntax: wasb://hdijobs@azimasv2.blob.core.windows.net/example/jar/hadoop-examples.jar
StatusFolder = "/AzimMRJobs/WordCountJobStatus" //Optional, but good to use to know where logs are uploaded in Azure Storage
};
mapReduceJob.Defines.Add("min_splitsize", "512mb");
盡管我認為這不能保證每個文件都可以完全讀取。 為此,您可能需要在此處http://www.andrewsmoll.com/3-hacks-for-hadoop-and-hdinsight-clusters/中說明的Java SDK
資源: http : //blogs.msdn.com/b/bigdatasupport/archive/2014/02/13/how-to-pass-hadoop-configuration-values-for-a-job-via-hdinsight-powershell-and-凈sdk.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.