SparkSQL 列查询不显示列内容?

Posted

技术标签:

【中文标题】SparkSQL 列查询不显示列内容?【英文标题】:SparkSQL Column Query not showing column contents? 【发布时间】:2018-03-27 18:48:48 【问题描述】:

我通过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 * 时显示 - 为什么第二个查询中没有显示?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

"SELECT NameDisplay FROM mytable "

或者,如果您需要引用它(也许列是这样创建的或有空格,或者区分大小写):

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

这是 SQL 语法,与 Spark 无关。

【讨论】:

谢谢!但是我发现双引号也不起作用,我需要通过反引号 ` 转义

以上是关于SparkSQL 列查询不显示列内容?的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询出一列内容,如何让它成一行显示。

Visual Studio 2015中DataGridView添加列文字显示不出来

SparkSQL调优

sql中如何使一列中的多个重复数据只显示第一条

TABLE表中,有一列内容显示很长,如何用HTML设置能够换行显示呢?

ABAP ALV 动态显示列