- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Hadoop 的初学者,正在使用 Hadoop map-reduce 中的ArrayWritables。
这是我正在使用的 Mapper 代码:-
public class Base_Mapper extends Mapper<LongWritable, Text, Text, IntWritable> {
String currLine[] = new String[1000];
Text K = new Text();
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
currLine = line.split("");
int count = 0;
for (int i = 0; i < currLine.length; i++) {
String currToken = currLine[i];
count++;
K.set(currToken);
context.write(K, new IntWritable(count));
}
}
}
reducer :-
public class Base_Reducer extends Reducer<Text, IntWritable,Text, IntArrayWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
IntArrayWritable finalArray = new IntArrayWritable();
IntWritable[] arr = new IntWritable[1000];
for (int i = 0; i < 150; i++)
arr[i] = new IntWritable(0);
int redCount = 0;
for (IntWritable val : values) {
int thisValue = val.get();
for (int i = 1; i <= 150; i++) {
if (thisValue == i)
arr[i - 1] = new IntWritable(redCount++);
}
}
finalArray.set(arr);
context.write(key, finalArray);
}
}
我正在使用 IntArrayWritable 作为 ArrayWritable 的子类,如下所示:-
import org.apache.hadoop.io.ArrayWritable;
import org.apache.hadoop.io.IntWritable;
public class IntArrayWritable extends ArrayWritable {
public IntArrayWritable() {
super(IntWritable.class);
}
public IntArrayWritable(IntWritable[] values) {
super(IntWritable.class, values);
}
}
Job 的预期输出是一组 Bases 作为键(这是正确的)和一组 IntWritables 作为值。但我得到的输出是:-
com.feathersoft.Base.IntArrayWritable@30374534
A com.feathersoft.Base.IntArrayWritable@7ca071a6
C com.feathersoft.Base.IntArrayWritable@9858936
G com.feathersoft.Base.IntArrayWritable@1df33d1c
N com.feathersoft.Base.IntArrayWritable@4c3108a0
T com.feathersoft.Base.IntArrayWritable@272d6774
为了解决这个问题,我必须做出哪些改变?
最佳答案
您需要在 IntArrayWritable
实现中覆盖 toString()
方法的默认行为。
请试试这个:
import org.apache.hadoop.io.ArrayWritable;
import org.apache.hadoop.io.IntWritable;
public class IntArrayWritable extends ArrayWritable {
public IntArrayWritable() {
super(IntWritable.class);
}
public IntArrayWritable(IntWritable[] values) {
super(IntWritable.class, values);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
for (String s : super.toStrings())
{
sb.append(s).append(" ");
}
sb.append("]")
return sb.toString();
}
}
如果您喜欢这个答案,请将其标记为已接受。谢谢。
关于hadoop - 使用 ArrayWritables 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670191/
我是 Hadoop 的初学者,正在使用 Hadoop map-reduce 中的ArrayWritables。 这是我正在使用的 Mapper 代码:- public class Base_Mappe
我刚开始使用 MapReduce,遇到了一个我无法通过 Google 解决的奇怪错误。我正在使用 ArrayWritable 制作一个基本程序,但是当我运行它时,在 Reduce 期间出现以下错误:
我正在使用 ArrayWritable,在某些时候我需要检查 Hadoop 如何序列化 ArrayWritable,这是我通过设置 job.setNumReduceTasks( 0): 0 In
我正在尝试从一个简单的 MapReduce 任务中的 ArrayWritable 获取输出。我发现了几个有类似问题的问题,但我无法在自己的代码中解决问题。所以我期待着你的帮助。谢谢 :)! 输入带有一
编辑:问题已解决 - 我犯了一个非常愚蠢的错误。 我有一个由 map、reduce、map 和 reduce 组成的 MapReduce 管道。我对第一个 reduce 使用 SequenceFile
我尝试在 pyspark 上保存一个键值 RDD。 RDD 的每个单元都有类型,用以下伪代码编写: ((str,str),(int,[(int,int),...]))` 我想将它保存在 hadoop
我是 Hadoop 和 Java 的新手。我的映射器输出文本和 Arraywritable。我无法读取 ArrayWritable 值。 Unbale 将 .get() 值转换为整数。附上映射器和缩减
我正在尝试创建一个从外部属性文件获取尺寸的动态 map 缩减应用程序。主要问题在于变量,即 key 将是复合的,并且可以是任何数字,例如一对 3 个 key 、一对 4 个 key 等。 我的映射器:
如何为自定义 Hadoop 类型定义 ArrayWritable?我正在尝试在 Hadoop 中实现倒排索引,使用自定义 Hadoop 类型来存储数据 我有一个 Individual Posting
我认为这很容易实现,但它开始变得很痛苦。 我有一个像这样的 ArrayWritable 子类: public class VertexDistanceArrayWritable extends Arr
在hadoop的ArrayWritable类中有一个toArray()方法,意思应该是:将这个ArrayWritable转换成一个数组。但它的语法是: public Object toArray()
我正在尝试创建一个由两个步骤组成的 mapreduce 链。第一个 reduce 将键值对作为 (key, value) 发出,其中 value 是自定义对象的列表,第二个映射器应该读取第一个 red
我是一名优秀的程序员,十分优秀!