我正在尝试读取具有以下格式的行的文件。
100,1:2:3 200,10:20:30
假设输入总是数字,我试图通过将输入键和值分别设置为IntWritable
和来读取文件Text
。但是当我运行它时,我收到以下错误:
java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.io.IntWritable
现在,虽然我明白这意味着什么,但我无法弄清楚如何将密钥读取为整数。如果我也读取密钥,代码运行Text
良好。如果我错过了配置,我已经检查了代码中的任何地方,但这对我来说似乎很好。
conf.set("mapred.textoutputformat.separator", "|");
conf.setInputFormatClass(KeyValueTextInputFormat.class);
conf.setOutputFormatClass(TextOutputFormat.class);
conf.setOutputKeyClass(IntWritable.class);
conf.setOutputValueClass(Text.class);
我还检查了映射器类和方法(没有减速器)。是否KeyValueTextInputFormat
可以将密钥仅作为文本读取?我无法理解我做错了什么。任何帮助将不胜感激。
谢谢,
EG