我已将所有客户归入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中的任何提示也都可以。
答案 0 :(得分:1)
您可以使用flatMapValues
功能:
JavaRDD<Object,ProductBean> result = custGroupRDD.flatMapValues(v -> v)