请帮助:
在我的mapper类中,我有一个示例变量 protected transient HashMap<String, Double> _map = null;
我在我的系统中初始化了这个变量 setup(Context context)
方法,也是 _map
由从 SequenceFile
.
设置方法:
@Override
protected void setup(Context context) throws IOException, InterruptedException
{
super.setup(context);
Configuration conf = context.getConfiguration();
_map = new HashMap<String, Double>();
Path seqFilePath = new Path(conf.get("in"));
Reader reader;
try
{
reader = new Reader(conf, Reader.file(seqFilePath));
Text key = new Text();
DoubleWritable value = new DoubleWritable();
while (reader.next(key, value))
{
_map.put(key.toString().trim(), value.get());
}
}
catch (IOException e)
{
LOGGER.error("Can't find the input path to read: " + seqFilePath, e);
}
}
``` `map()` 方法:
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException
{
...
getDiscretizationLabel(...);
...
}
在我的 `getDiscretizationLabel(...)` 我试图从中检索数据的方法 `_map` 变量但a `NullPointerException` 正在投掷:
private void getDiscretizationLabel(String attribute, String value, String category, int bin, Context context) throws IOException, InterruptedException
{
...
min = _map.get(attribute + "_min"); // throws NullPointerException
max = _map.get(attribute + "_max");
...
}
``` getDiscretizationLabel(...)
抛出 NullPointerException
,到目前为止,我还不知道为什么会这样,这里被封锁了。
有办法解决这个问题还是解决办法?谢谢!
1条答案
按热度按时间jfewjypa1#
我猜文件没有正确加载/找到。作为旁白,我将使用一个计数器(group=“error”,name=“ioexception”)来计算setup()方法中抛出ioexception的次数。从反报告中很容易看出这一点:
如果确定没有抛出错误,请在try catch块之前向记录器写入错误。使用错误的严重性,以便您可以确认是否可以找到记录的错误消息。