我需要使用密钥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
两次的情况下执行此操作?
答案 0 :(得分:2)
我们将来自不同客户的数据写入不同的表,这基本上是相同的用例。我们使用的常见模式是这样的:
val customers:List[String] = ???
customers.foreach{customer => rdd.filter(record => belongsToCustomer(record,customer)).saveToFoo()}
这可能不符合'没有迭代rdd两次(或n次)'的愿望,但过滤器是在并行分布式环境中进行的廉价操作并且它有效,所以我认为它确实符合“一般的火花方式”做事。