Ich habe versucht:Schwierigkeit Erstellen spark.sql.Row aus Textdatei
Allerdings erhalte ich den Fehler type mismatch; found : org.apache.spark.rdd.RDD[Array[String]] required: Seq[Any]
Wie ich die Karte zu beheben?
Ich habe versucht:Schwierigkeit Erstellen spark.sql.Row aus Textdatei
Allerdings erhalte ich den Fehler type mismatch; found : org.apache.spark.rdd.RDD[Array[String]] required: Seq[Any]
Wie ich die Karte zu beheben?
Wenn das, was Sie versuchen, ein CSV in einen Datenrahmen zu laden, zu tun ist, gibt es einen einfacheren Weg:
val dataframe: DataFrame = spark.read.csv("file.text")
Alternativ, wenn Sie bei der Umwandlung ein RDD[String]
in wirklich interessiert sind ein RDD[Row]
- hier ist, wie Sie das tun würde:
val rows: RDD[Row] = textLines.map(_.split(",")).map {
a: Array[_] => Row(a: _*)
}
Aber beachten Sie, dass dies „uneben“ Zeilen erstellen (wenn Ihre Daten keine richtige CSV ist, unterschiedliche Zeilen mi ght haben unterschiedliche Anzahl von Spalten, die diese RDD ziemlich unbrauchbar machen würde).
Karte ist eine Funktionsfunktion höherer Ordnung. Der Rückgabewert ist die die Art, auf dem Sie die Anwendung Map-Funktion immer eingewickelt
Beispiel: -. List ("Antwort", "Frage", "Stackoverflow") Karte (x => x.length)
Dann ist diese map-Funktion auf String-Wert angewandt, sondern gibt den Int Wert aber dies wird auf Liste gewickelte dh List[String] => List[Int]
hier Ihre Karte auf textLines
angewandt wird, das ist der Typ RDD [Zeichenfolge] Dann haben Sie angewandte Karte über RDD[String]
, diezurückgeben nicht Array[String]
Sie müssen nur verwenden sammeln() -Methode wie;
val textLines = spark.sparkContext.textFile("file.txt")
val wordsArray = textLines.flatMap(_.split(",")).collect
val rowRDD = Row.fromSeq(wordsArray)
Ich verwende collect()
Methode, wird gelangen Sie zurück Array[String]
und ich bin mit flatMap
statt map
weil flatMap
den Wert Flacht sonst auf Collect() Sie Array[Array[String]]
erhalten Sie Karte verwenden können, wenn es Ihr Szenario passt .
Hope this lösen Ihr Problem
ich auch würde fragen, warum du so eine Reihe von Textdatei erstellen möchten? Da Sie eine CSV-Datei analysieren, würde Ihnen vielleicht spark-csv helfen, auf einer höheren Ebene zu arbeiten.