使用 C# 的 Mapreduce:处理整个输入文件

Mapreduce with C#: Process whole input files

问题:

我正在用 C# 为 HDInsight 创建一个 MapReduce 应用程序。我需要处理整个输入文件。

我明白,在 Hadoop 中有两个选项可以实现这一点:

我不知道如何在 HDInsight 上使用 C# 实现这些选项中的任何一个。

详情:

我要么

任何一种方法的解决方案都会有很大帮助。

您可以使用 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");

虽然我认为这不能保证每个文件都会被完整读取。为此,您可能需要此处说明的 Java SDK http://www.andrewsmoll.com/3-hacks-for-hadoop-and-hdinsight-clusters/

资源: http://blogs.msdn.com/b/bigdatasupport/archive/2014/02/13/how-to-pass-hadoop-configuration-values-for-a-job-via-hdinsight-powershell-and-net-sdk.aspx