SparkSQL列查询没有显示列内容?

时间:2018-03-27 18:48:48

标签: apache-spark hadoop pyspark apache-spark-sql hdinsight

我已经通过df.saveAsTable

创建了一个持久性表格

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

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

我可以查看DataFrame及其所有列以及所有数据。

然而,当我跑

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

我收到的结果看起来像这样

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

NameDisplay肯定是表中的一列,因为它在我运行select *时显示 - 为什么第二个查询中没有显示?

2 个答案:

答案 0 :(得分:0)

问题是在列名称上使用引号。需要通过反引号“NameDisplay”

进行转义

答案 1 :(得分:0)

在SQL中选择'NameDisplay',选择文字,文本“NameDisplay”。在那,你得到的结果实际上是有效的。

要选择“NameDisplay”列的值,您必须发出:

"SELECT NameDisplay FROM mytable "

或者,如果你需要引用它(可能是这个列是这样创建的,或者是空格,或者区分大小写):

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

这是SQL语法,没有特定于Spark。