Spark:在CollectAsMap()或Collect()之后,每个条目都具有相同的值

时间:2015-09-18 09:29:09

标签: java hadoop apache-spark

我需要读取文本文件并将此文件更改为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)]

正如我们所看到的,键被正确插入,但每个值都是输入的最后一个值。 我不知道为什么会这样......

0 个答案:

没有答案