Учитывая два приведенных ниже Spark Datasets
, flights
и capitals
, какой самый эффективный способ вернуть объединенный (то есть "присоединенный") результат без предварительного преобразования в DataFrame
или выписывание всех столбцов по имени методом .select()
?Я знаю, например, что я могу получить доступ либо к кортежу с помощью (например, .map(x => x._1
), либо с помощью оператора *
с:
result.select("_1.*","_2.*")
Но последнее может привести к дублированию имен столбцов, и янадеясь на более чистое решение.
Спасибо за вашу помощь.
case class Flights(tripNumber: Int, destination: String)
case class Capitals(state: String, capital: String)
val flights = Seq(
(55, "New York"),
(3, "Georgia"),
(12, "Oregon")
).toDF("tripNumber","destination").as[Flights]
val capitals = Seq(
("New York", "Albany"),
("Georgia", "Atlanta"),
("Oregon", "Salem")
).toDF("state","capital").as[Capitals]
val result = flights.joinWith(capitals,flights.col("destination")===capitals.col("state"))