Gibt es eine Spark-Funktion, die es erlaubt, eine Sammlung in mehrere RDDs aufzuteilen? Eine solche Funktion würde eine übermäßige Iteration vermeiden. Zum Beispiel:Scala Spark: Split-Sammlung in mehrere 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")
}
In diesem Beispiel habe ich iterieren haben ‚logData` zweimal nur um Ergebnisse in zwei separaten Dateien zu schreiben:
val lineAs = logData.filter(line => line.contains("a")).saveAsTextFile("linesA.txt")
val lineBs = logData.filter(line => line.contains("b")).saveAsTextFile("linesB.txt")
Es stattdessen wäre schön, so etwas zu haben:
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")
Irgendwelche solche Sache?
Sie scheinen groupBy Variante zu wollen, die eine Karte zurück von substring-> RDD, anstatt eine RDD von substring-> Iterable [String]? –