Как добавить коллекцию как новый столбец в DataFrame с большим количеством столбцов? - PullRequest
2 голосов
/ 01 апреля 2019

Я хотел бы добавить (добавить) новый столбец к существующему фрейму данных с несколькими столбцами.

val a = Seq(
  ("10", "MILLER", "1300", "2017-11-03"),
  ("30", "Martin", "1250", "2017-11-21")).toDF("dept_no","emp_name","sal","date")
scala> a.show
+-------+--------+----+----------+
|dept_no|emp_name| sal|      date|
+-------+--------+----+----------+
|     10|  MILLER|1300|2017-11-03|
|     30|  Martin|1250|2017-11-21|
+-------+--------+----+----------+

С помощью указанного выше фрейма данных я бы хотел добавить каждый элемент коллекции (будь то обычная коллекция Scala или другой DataFrame с одним столбцом), например,

val lst = List("10", "Susan")

Как добавить элементы lst выше в строки a кадра данных (по одному элементу в строке)?

1 Ответ

1 голос
/ 01 апреля 2019

Давайте преобразовать lst в DataFrame:

val lst = List("10", "Susan").toDF

Вы можете использовать zip метод RDD:

import org.apache.spark.sql.Row
val data = a.rdd.zip(lst.rdd).map { case (l, r) => Row.fromSeq(l.toSeq ++ r.toSeq) }
import org.apache.spark.sql.types.StructType
val schema = StructType(a.schema.fields ++ lst.schema.fields)
val solution = spark.createDataFrame(data, schema)
scala> solution.show
+-------+--------+----+----------+-----+
|dept_no|emp_name| sal|      date|value|
+-------+--------+----+----------+-----+
|     10|  MILLER|1300|2017-11-03|   10|
|     30|  Martin|1250|2017-11-21|Susan|
+-------+--------+----+----------+-----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...