Вы можете запускать запросы к фреймам данных, используя альтернативный API ниже:
Зарегистрировать фрейм данных как временную таблицу
df.registerTempTable("myTable")
Затем выполнить запрос к нему:
spark.sql("select a as b from myTable")
Таким образом, вы можете получить выражения для каждого столбца, из которого вы выбираете, как строки, где бы вы ни были, построить SQL-запрос и выполнить, как указано выше ...
Вы можете построить запрос примерно так ...
def buildQuery(columns: Seq[String], table: String): String {
columns.mkString("select ", ", ", s" from $table")
}
val columns = Seq(
"""a as b""",
"""<some more complex case statement>""",
// etc.
)
def buildQuery(columns: Seq[String], table: String): String {
columns.mkString("select ", ", ", s" from $table")
}
df.sql(buildQuery(columns, "myTable"))