So erstellen Sie eine Zeile von einer Liste oder Array in der Funke mit Scala
Ich versuche, eine Zeile erstellen (org.apache.spark.sql.catalyst.expressions.Row
) auf der Grundlage der Benutzereingabe. Ich bin nicht in der Lage, erstellen Sie eine Zeile nach dem Zufallsprinzip.
gibt es alle Funktionen zum erstellen einer Reihe von List
oder Array
.
ZB., Wenn ich eine .csv
- Datei mit dem folgenden format,
"91xxxxxxxxxx,21.31,15,0,0"
Wenn die Eingabe des Benutzers [1, 2]
dann brauche ich nur nehmen, 2. Säule und 3. Säule zusammen mit der customer_id
die die erste Spalte
Ich versuche zu analysieren, es mit dem code:
val l3 = sc.textFile("/SparkTest/abc.csv").map(_.split(" ")).map(r => (foo(input,r(0)))) `
wo foo ist definiert als
def f(n: List[Int], s: String) : Row = {
val n = input.length
var out = new Array[Any](n+1)
var r = s.split(",")
out(0) = r(0)
for (i <- 1 to n)
out(i) = r(input(i-1)).toDouble
Row(out)
}
und input ist eine Liste mit sagen
val input = List(1,2)
Ausführen dieses Codes bekomme ich l3:
Array[org.apache.spark.sql.Row] = Array([[Ljava.lang.Object;@234d2916])
Aber was ich sagen will ist:
Array[org.apache.spark.sql.catalyst.expressions.Row] = Array([9xxxxxxxxxx,21.31,15])`
Diese muss übergeben werden, erstellen Sie ein schema erstellen, in Spark SQL
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas, das wie folgt funktionieren sollte:
Ihnen fehlt der Erstellung der StructField und StructType. Finden Sie in der offiziellen Anleitung http://spark.apache.org/docs/latest/sql-programming-guide.html, Teil Programmgesteuert Festlegen das Schema
Ich bin nicht ein Scala-Spezialist, aber in Python würde es so Aussehen:
Kurz gesagt, sollten Sie nicht direkt konvertieren Sie Sie in der Zeile die Objekte, lassen Sie einfach als RDD und anwenden-schema, um es mit
applySchema
StructType
?Können Sie auch versuchen: