Ich empfehle Ihnen, die Datei als Datenrahmen zu lesen, deren API in der zukünftigen Spark-Version als RDD API mehr Gewicht haben wird. Und mit einem Datenrahmen, die Aufgabe, die Sie fragen, ist recht unkompliziert mit split
und explode
Funktionen:
val df = Seq(("no1", "1|3|4"), ("no2", "4|5|6")).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: string, B: string]
df.show
+---+-----+
| A| B|
+---+-----+
|no1|1|3|4|
|no2|4|5|6|
+---+-----+
df.withColumn("B", explode(split($"B", "\\|"))).show
+---+---+
| A| B|
+---+---+
|no1| 1|
|no1| 3|
|no1| 4|
|no2| 4|
|no2| 5|
|no2| 6|
+---+---+
Dank für Ihren Kommentar. Wenn ich eine Daten-TXT-Datei habe und sie eingegeben haben möchte (nicht manuell eingeben), wie erreiche ich den Befehl für eine vom Benutzer eingegebene Datei? – sclee1
@ sclee1 durch Lernen Spark. Ich bin nicht abfällig, es ist nur du kannst nicht erwarten, deine Anwendung nur aus einer Abfolge von Fragen zu [SO] zu schreiben. Jedes Spark-Tutorial behandelt das Lesen aus einer Datei. –
Abhängig von Ihrer Spark-Version unterscheidet sich das Lesen von einer Datei. Für spark 2+ finde ich 'spark.read.option (" header "," true "). Option (" inferSchema "," true "). Csv (deine Datei)' um bequem zu benutzen zu sein. – Psidom