sparkSession.sql("select struct(col1,col2) as myStruct from table1")
使用以下模式返回数据框
root
|-- myStruct : struct (nullable = false)
| |-- col1: string (nullable = true)
| |-- col2: string (nullable = true)
但是我需要 col1 作为 myCol1 和 col2 作为 myCol2 ?
当我在struct函数中使用 as 关键字时,它将失败
sparkSession.sql("select struct(col1 as myCol1,col2 as myCol2) as myStruct from table1")
给出以下错误消息
mismatched input 'as' expecting {')', ','}(line 1, pos 19)
如何在 struct 字段中获取列别名?
答案 0 :(得分:0)
您可以在Spark 2.1.0中创建的DF上尝试
val newDF = oldDF.withColumn("MyCol",struct($"myCol.col1".alias("myCol1"),$"myCol.col2".alias("myCol2"))).drop("myCol").withColumnRenamed("MyCol","myCol")