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 无关。
我通过 df.saveAsTable
当我运行以下查询时,我收到这些结果
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 无关。