Вот решение в Scala.
Поскольку df_one
- это небольшой набор данных (даже если общее количество столбцов в тысячах), можно collect
DataFrame как Array
. Теперь collect
-ing DataFrame приведет к Array
из Row
s:
df_one.collect
// res1: Array[org.apache.spark.sql.Row] = Array([NAME], [ID], [COUNTRY])
Чтобы развернуть Row
с (одного String
), просто примените метод Row
getString
:
df_one.collect.map(_.getString(0))
// res2: Array[String] = Array(NAME, ID, COUNTRY)
В целом:
val df_one = Seq(
"NAME", "ID", "COUNTRY"
).toDF("Column_Name")
val df_two = Seq(
("AAA", "001", "US"),
("BBB", "002", "UK"),
("CCC", "003", "IN"),
("DDD", "004", "FR")
).toDF("_c0", "_c1", "_c2")
val colNames = df_one.collect.map(_.getString(0))
df_two.toDF(colNames: _*).show
// +----+---+-------+
// |NAME| ID|COUNTRY|
// +----+---+-------+
// | AAA|001| US|
// | BBB|002| UK|
// | CCC|003| IN|
// | DDD|004| FR|
// +----+---+-------+