Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带C#的Mapreduce:处理整个输入文件_C#_Mapreduce_Hadoop Streaming_Azure Hdinsight - Fatal编程技术网

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

带C#的Mapreduce:处理整个输入文件,c#,mapreduce,hadoop-streaming,azure-hdinsight,C#,Mapreduce,Hadoop Streaming,Azure Hdinsight,问题: 我正在用C#for HDInsight创建一个MapReduce应用程序。我需要处理整个输入文件 我知道,Hadoop中有两个选项可以实现这一点: 从InputFormat类派生,并始终允许isSplitable 返回错误 将min_splitsize设置为足够大的值 我不知道如何使用C#on HDInsight实现这些选项 详细信息: 我不是 使用Microsoft.Hadoop.MapReduce,并通过Hadoop.MapReduceJob.ExecuteJob()启动作业

问题:

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

我知道,Hadoop中有两个选项可以实现这一点:

  • 从InputFormat类派生,并始终允许isSplitable 返回错误
  • 将min_splitsize设置为足够大的值
我不知道如何使用C#on HDInsight实现这些选项

详细信息:

我不是

  • 使用Microsoft.Hadoop.MapReduce,并通过
    Hadoop.MapReduceJob.ExecuteJob()启动作业

  • 或者通过创建控制台应用程序并通过从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参数设置最小拆分大小

$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#

尽管我认为这并不能保证每个文件都能被完全读取。要做到这一点,您可能需要这里介绍的JavaSDK

资源:

Andrew,谢谢,这听起来正是我想要的。我只是需要一些时间来验证一下。
    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");