展平RDD的元素

时间:2015-08-27 00:39:01

标签: scala apache-spark

我正在使用Spark scala API。 prods_grpd具有以下类型:String,mutable.HashSet [String]

val prods_grpd = all_meds.aggregateByKey(initialSet)(addToSet,mergePartitionSets) prods_grpd.saveAsTextFile( “刮/ prods_grpdby_users.tsv”)

当我保存这个rdd时,我得到了这个o / p。第一个值是key,然后我得到一组键。

(8635214,集(2013-01-01))

(3580112,集(2013-01-01))

(146086,Set(2010-01-01,2012-01-01))

(112220,集(2013-01-01))

(2020,集(2013-01-01))

(24218,集(2013-01-01))

但是,我想要o / p之类的:

(8635214,2013-01-01)

(3580112,2013-01-01)

(146086,2010-01-01,2012-01-01)

(112220,2013-01-01)

(2020,2013-01-01)

(24218,2013-01-01)

我想知道如何取消/压平RDD的第二个参数。

1 个答案:

答案 0 :(得分:0)

您不能简单地将Set转换为Tuple,因为元组不是集合,不支持任意数量的元素。相反,您可以将条目映射到具有所需格式的字符串:

prods_grpd.map{case (k, s) => {
  val sstr = s.mkString(",")
  s"($k,$sstr)"
}}.saveAsTextFile(...)