1
我有一个RDD的结构为RDD:[String A,List(Strings Bs)]
我想映射它,以便我得到一个RDD:[String A,String B]
,以便列表中的每个元素将匹配字符串A.什么是最有效的方法呢?斯卡拉/火花映射[字符串,列表[字符串]]到字符串对
我目前使用flatMapValues
,这会是最有效的方法吗? (我有庞大的数据集)
我有一个RDD的结构为RDD:[String A,List(Strings Bs)]
我想映射它,以便我得到一个RDD:[String A,String B]
,以便列表中的每个元素将匹配字符串A.什么是最有效的方法呢?斯卡拉/火花映射[字符串,列表[字符串]]到字符串对
我目前使用flatMapValues
,这会是最有效的方法吗? (我有庞大的数据集)
rdd.flatMapValues(identity)
应该完成工作。
这应该是一个非常有效和简单的方法。 为了优化性能,您可以将其与使用mapPartitions
的实现进行比较,并从中选择更好的。我不希望有这么大的差别,因为无论如何都需要创建封装器对象。
rdd.mapPartitions(iter => iter.flatMap(elem => elem._2.map(v => (elem._1,v)))
看起来像您正在使用Java API。请指定您使用的API。 –
是的... flatMapValues是这种事情的最佳途径之一。 –
除了flatMapValues之外,您是否从共同组获得RDD?如果是这样,使用连接,而不是这个中间RDD将产生你想要的。 –