DataFrame列名称与.(点)冲突

bel*_*lka 6 scala apache-spark apache-spark-sql

我有一个df具有此架构的DataFrame :

root
 |-- person.name: string (nullable = true)
 |-- person: struct (nullable = true)
 |    |-- age: long (nullable = true)
 |    |-- name: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,df.select("person.name")我显然name从中获取子字段person.我该如何选择列person.name

Sha*_*ala 10

对于包含的列名,.(dot)可以使用该`字符括起列名

df.select("`person.name`") 
Run Code Online (Sandbox Code Playgroud)

这将选择外部字符串 person.name: string (nullable = true)

df.select("person.name")

这将获取结构的人名

 |-- person: struct (nullable = true)
 |    |-- age: long (nullable = true)
Run Code Online (Sandbox Code Playgroud)

如果你有一个列名,你可以在前面加上`列的名字作为字符

"`" + columnName + "`"
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮到你!