将所有值与Iterable,Apache Spark分开

时间:2015-10-27 10:38:00

标签: mongodb apache-spark

我已将所有客户归入JavaPairRDD<Long, Iterable<ProductBean>>,其中customerId(Long类型)。意味着每个customerId都有一个List或ProductBean。

现在我想将所有ProductBean保存到DB,而不管customerId如何。我用方法
得到了所有的价值  JavaRDD<Iterable<ProductBean>> values = custGroupRDD.values();

现在我想将JavaRDD<Iterable<ProductBean>>转换为JavaRDD<Object, BSONObject>,以便我可以将其保存到Mongo。请记住,每个BSONObject都由Single ProductBean组成。

我不知道如何在Spark中做到这一点,我的意思是Spark's Transformation用于完成这项工作。我认为这个任务是某种seperate all values from Iterable。请告诉我这是怎么回事。
Scala或Python中的任何提示也都可以。

1 个答案:

答案 0 :(得分:1)

您可以使用flatMapValues功能:

JavaRDD<Object,ProductBean> result = custGroupRDD.flatMapValues(v -> v)