2016-02-03 5 views
1

Проблема:MapReduce с C#: весь процесс ввода файлов

Я создаю приложение MapReduce в C# для HDInsight. Мне нужно обработать целые входные файлы.

Я понимаю, есть два варианта в Hadoop для достижения этой цели:

  • Выведение из класса InputFormat, и позволяя isSplitable всегда возвращение ложных
  • Установка min_splitsize на крупно- достаточно значение

Я не могу понять, как достичь любого из этих вариантов, используя C# на HDInsight.

Детали:

Я либо

  • Использование Microsoft.Hadoop.MapReduce и начать работу через hadoop.MapReduceJob.ExecuteJob<MyJob>();

  • Или просто создать консольное приложение и запуск это от лазурной державы через

    $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

Раствор для в любом случае поможет много.

ответ

1

Вы можете установить min_splitsize с помощью параметра -Defines в PowerShell

$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://[email protected]/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

+0

Андрей, спасибо, это звучит так же, как то, что я искал. Мне просто нужно некоторое время, чтобы проверить это. –