Scala Spark: разбить коллекцию на несколько RDD?
Есть ли какая-либо функция Spark, которая позволяет разбить коллекцию на несколько RDD в соответствии с некоторыми вариантами? Такая функция позволила бы избежать чрезмерного изменения. Например:
def main(args: Array[String]) {
val logFile = "file.txt"
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val lineAs = logData.filter(line => line.contains("a")).saveAsTextFile("linesA.txt")
val lineBs = logData.filter(line => line.contains("b")).saveAsTextFile("linesB.txt")
}
В этом примере мне нужно дважды выполнить итерацию 'logData`, чтобы записать результаты в два отдельных файла:
val lineAs = logData.filter(line => line.contains("a")).saveAsTextFile("linesA.txt")
val lineBs = logData.filter(line => line.contains("b")).saveAsTextFile("linesB.txt")
Было бы неплохо иметь что-то вроде этого:
val resultMap = logData.map(line => if line.contains("a") ("a", line) else if line.contains("b") ("b", line) else (" - ", line)
resultMap.writeByKey("a", "linesA.txt")
resultMap.writeByKey("b", "linesB.txt")
Любая такая вещь?