我需要读取文本文件并将此文件更改为Map。
当我创建JavaPairRDD时,它运行良好。
但是,当我将JavaPairRDD更改为Map时,每个条目都具有相同的值,更具体地说是文本文件中的最后一个数据。
INPUTFILE:
1 book:3000
2 pencil:1000
3 coffee:2500
当我读取文本文件时,我使用了Hadoop自定义输入格式。
使用此格式,Key为数字,Value为自定义类费用< content,price> 。
JavaPairRDD<整数,费用和GT; inputRDD = JavaSparkContext.newAPIHadoopFile(inputFile,ExpenseInputFormat.class,Integer.class,Expense.class,HadoopConf);
inputRDD:
[1, (book,3000)]
[2, (pencil,1000)]
[3, (coffee,2500)]
然而,当我这样做的时候
地图<整数,费用和GT; inputMap = new HashMap< Integer,Expense>(inputRDD.collectAsMap());
的InputMap:
[1, (coffee,2500)]
[2, (coffee,2500)]
[3, (coffee,2500)]
正如我们所看到的,键被正确插入,但每个值都是输入的最后一个值。 我不知道为什么会这样......