通常情況下,我們寫形式的映射:映射器輸入鍵值對Hadoop中
public static class Map extends Mapper<**LongWritable**, Text, Text, IntWritable>
這裏,輸入鍵值對的映射是<LongWritable, Text>
- 據我知道什麼時候該映射得到輸入數據逐行掃描 - 所以映射器的密鑰表示行號 - 如果我錯了,請糾正我的錯誤。
我的問題是:如果我給了映射器的輸入鍵值對作爲<Text, Text>
那麼它給錯誤
java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
它是強制性的,爲輸入鍵值對映射爲<LongWritable, Text>
- 如果是,那麼爲什麼?如果沒有,那麼錯誤的原因是什麼?你能幫我理解錯誤的正確推理嗎?
在此先感謝。
不強制使用'LongWritable'作爲重點。你在做什麼來產生這個異常?你的代碼在哪裏出現? – Vidya
我沒有做任何明確的生成此異常 - 它顯示:: java.lang.ClassCastException:org.apache.hadoop.io.LongWritable不能轉換爲org.apache.hadoop.io.Text 在ExamTest $ Map.map(ExamTest.java:1) 在org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370) at org.apache.hadoop.mapred.Child $ 4.run(Child.java:255) – Ronin
請問您能解釋一下情況嗎?謝謝。 – Ronin