SparkSQL 列查询不显示列内容?

SparkSQL Column Query not showing column contents?

我通过 df.saveAsTable

创建了一个持久性 table

当我运行以下查询时,我收到这些结果

spark.sql("""SELECT * FROM mytable """).show()

我查看了 DataFrame 及其所有列和所有数据。

然而当我运行

spark.sql("""SELECT 'NameDisplay' FROM mytable """).show()

我收到的结果是这样的

|  NameDisplay|
|--|
| NameDisplay | 
| NameDisplay | 
| NameDisplay | 
| NameDisplay | 
| NameDisplay | 
| NameDisplay | 

NameDisplay 绝对是 table 中的列之一,正如我在 运行 select * 中显示的那样 - 为什么第二个查询中没有显示它?

问题是在列名上使用了引号。需要通过反引号转义 ``NameDisplay`

在 SQL 中选择 'NameDisplay' 是 select 文字,文本 "NameDisplay"。这样,您得到的结果实际上是有效的。

到 select 列的 "NameDisplay" 值,那么你必须发出:

"SELECT NameDisplay FROM mytable "

或者,如果您需要引用它(也许列是这样创建的或有空格,或者是 case-sensitive):

"""SELECT `NameDisplay` FROM mytable"""

这是 SQL 语法,与 Spark 无关。