Ich verwende ein Drittanbieter-Paket für Funken, die ein "PointFeature" -Objekt verwendet. Ich versuche, eine CSV-Datei aufzunehmen und Elemente jeder Zeile in ein Array dieser PointFeature-Objekte einzufügen.CSV zu Array von Objekten
Der PointFeature Konstruktor für meine Implementierung sieht wie folgt aus:
Feature(Point(_c1, _c2), _c3)
wo _C1, _C2 und _c3 die Säulen meiner csv und Doppel vertreten.
Hier ist meine aktuelle Versuch:
val points: Array[PointFeature[Double]] = for{
line <- sc.textFile("file.csv")
point <- Feature(Point(line._c1,line._c2),line._c3)
} yield point
Mein Fehler zeigt sich, wenn die Spalten Referenzierung
<console>:36: error: value _c1 is not a member of String
point <- Feature(Point(line._c1,line._c2),line._c3.toDouble)
^
<console>:36: error: value _c2 is not a member of String
point <- Feature(Point(line._c1,line._c2),line._c3.toDouble)
^
<console>:36: error: value _c3 is not a member of String
point <- Feature(Point(line._c1,line._c2),line._c3.toDouble)
^
Dies ist natürlich, weil ich einen String Referenzierung bin, als ob es ein Element eines waren Datenrahmen. Ich frage mich, ob es eine Möglichkeit gibt, mit DataFrames in diesem Loop-Format zu arbeiten, oder eine Möglichkeit, jede Zeile in eine Liste von Doubles aufzuteilen. Vielleicht brauche ich eine RDD?
Auch bin ich nicht sicher, dass dies ein Array ergeben wird. Eigentlich vermute ich, es wird eine RDD zurückkehren ...
Ich bin mit Spark-2.1.0 auf Amazon EMR
Hier sind einige andere Fragen, die ich aus gezogen haben:
How to read csv file into an Array of arrays in scala
Splitting strings in Apache Spark using Scala
How to iterate records spark scala?