2013-11-13 4 views
0

Как написать содержимое mapper в файл. Это прекрасно.Как написать содержимое из файла mapper в файл - Hadoop

public class MyMapper extends 
     Mapper<Object, Text, Text, MatrixWritable > { 
public void map(Object key, Text value, Context context) 
      throws IOException, InterruptedException { 

Configuration conf = new Configuration(); 
    FileSystem fs = FileSystem.get(conf); 

    Path inputfile = new Path("in/map"); 
    BufferedWriter getdatabuffer = new BufferedWriter(new OutputStreamWriter(fs.create(inputfile))); 
    if(value.toString()!= null){ 
      getdatabuffer.write(value.toString()); 
     } 
      getdatabuffer.close(); 

Если мой входной файл разбит, работает ли вышеуказанный код?

В редукторе я совмещаю все данные картографа.

РЕДАКТИРОВАТЬ

 Path inputfile = new Path("in/map"); 
      FSDataOutputStream out = fs.create(inputfile); 
     if(value.toString()!= null){ 
      out.writeBytes(value.toString()); 
     } 
      out.close(); 

ответ

1

Картопостроитель задача работать одновременно на нескольких узлах в кластере Hadoop. Ваш метод написания с обычными классами Java Writer не будет работать только потому, что вам нужно использовать API HDFS для записи данных.

Вместо этого в методе карты используйте context.write() для записи данных в файлы HDFS.

+0

Thanxs Ankur. Я делаю дальнейшие вычисления после того, как файл, прочитанный в mapper.i, должен знать, что вышеуказанный код идеально подходит для входных каналов? –

+0

Я отредактировал сообщение. Посмотри на это. –

+0

oh ok.But. Интересно, почему он успешно запускается для файла размером 100 КБ в кластере с указанным выше кодом. Но в то время как я попытался с файлом 90 МБ, это дало мне исключение Lease Mismatch. –

Смежные вопросы