Ich benutze Spark SQL mit Datenrahmen. Ich habe einen Eingabedatenrahmen und möchte seine Zeilen an einen größeren Datenrahmen mit mehr Spalten anhängen (oder einfügen). Wie würde ich das tun?Spark SQL: Wie füge ich eine neue Zeile an eine Dataframe-Tabelle an (aus einer anderen Tabelle)
Wenn dies SQL wäre, würde ich INSERT INTO OUTPUT SELECT ... FROM INPUT
verwenden, aber ich weiß nicht, wie man das mit Spark SQL macht.
Für Konkretion:
var input = sqlContext.createDataFrame(Seq(
(10L, "Joe Doe", 34),
(11L, "Jane Doe", 31),
(12L, "Alice Jones", 25)
)).toDF("id", "name", "age")
var output = sqlContext.createDataFrame(Seq(
(0L, "Jack Smith", 41, "yes", 1459204800L),
(1L, "Jane Jones", 22, "no", 1459294200L),
(2L, "Alice Smith", 31, "", 1459595700L)
)).toDF("id", "name", "age", "init", "ts")
scala> input.show()
+---+-----------+---+
| id| name|age|
+---+-----------+---+
| 10| Joe Doe| 34|
| 11| Jane Doe| 31|
| 12|Alice Jones| 25|
+---+-----------+---+
scala> input.printSchema()
root
|-- id: long (nullable = false)
|-- name: string (nullable = true)
|-- age: integer (nullable = false)
scala> output.show()
+---+-----------+---+----+----------+
| id| name|age|init| ts|
+---+-----------+---+----+----------+
| 0| Jack Smith| 41| yes|1459204800|
| 1| Jane Jones| 22| no|1459294200|
| 2|Alice Smith| 31| |1459595700|
+---+-----------+---+----+----------+
scala> output.printSchema()
root
|-- id: long (nullable = false)
|-- name: string (nullable = true)
|-- age: integer (nullable = false)
|-- init: string (nullable = true)
|-- ts: long (nullable = false)
Ich möchte alle Zeilen von input
bis Ende output
anzuhängen. Gleichzeitig möchte ich die output
-Spalte von init
als eine leere Zeichenfolge ''
und die ts
-Spalte als den aktuellen Zeitstempel festlegen, z. 1461883875L.
Jede Hilfe wäre willkommen.
By the way, für verteilte Daten gibt es keine „Start“ noch „Ende“, so sollst du von Indizes vergessen. Außerdem ist die Verwendung von 'var's in Scala eine schlechte Übung. Was ist der Standardwert für "ts" in dem Schema, das Sie zeigen, dass es nicht nullbar ist –