2014-10-19 55 views
-1

我有一个可迭代Object.To转换IntWriter为int我们可以使用get()method.Is有没有办法来检索可迭代Intwriter object.I的第一个值试图Hadoop IntWritable可通过索引检索值?

Iterator<IntWritable> values; 
values.get(0).get() //To retrieve the first value. 

回答

0

使用番石榴:

Iterable<IntWritable> iterable = ...; 
int first = Iterables.get(iterable, 0).get(); 

或者Java8:

int value = StreamSupport.stream(iterable.spliterator(), false).findFirst().get().get(); 
0

你正在寻找这个?

Iterator<IntWriteable> itr = iterable.iterator(); 
while (itr.hasNext()) { 
    System.out.println(itr.next().get()); 
    break; 
} 
+0

都能跟得上我问Hadoop的数据类型IntWritable不字符串我知道strings.Thanks。 – user1613360 2014-10-19 07:38:57

+0

现在有道理吗? – SMA 2014-10-19 08:37:24

+0

是的,但我的问题是不同的我想要索引0的第一个元素,而不使用迭代器。 – user1613360 2014-10-19 08:56:07

0
public void reduce(Text key, Iterable<IntWritable> values, Context context) 
      throws IOException, InterruptedException { 

     int sum = 0; 
     for (IntWritable value : values) { 
      sum += value.get(); 
     } 
     // big 2 
     context.write(key, new IntWritable(sum)); 
    } 
+0

你可能会考虑解释你的代码 – Squiddie 2017-10-16 11:32:07