Spark:如何将不同的组值从RDD写入不同的文件?

时间:2014-12-08 16:43:19

标签: scala apache-spark

我需要使用密钥1将值写入file1.txt,将值2写入file2.txt

val ar = Array (1 -> 1, 1 -> 2, 1 -> 3, 1 -> 4, 1 -> 5, 2 -> 6, 2 -> 7, 2 -> 8, 2 -> 9)
val distAr = sc.parallelize(ar)
val grk = distAr.groupByKey()

如何在不收集集合grk 两次的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

我们将来自不同客户的数据写入不同的表,这基本上是相同的用例。我们使用的常见模式是这样的:

val customers:List[String] = ???

customers.foreach{customer => rdd.filter(record => belongsToCustomer(record,customer)).saveToFoo()}

这可能不符合'没有迭代rdd两次(或n次)'的愿望,但过滤器是在并行分布式环境中进行的廉价操作并且它有效,所以我认为它确实符合“一般的火花方式”做事。