【发布时间】:2021-11-23 22:34:06
【问题描述】:
我正在尝试使用 Spark SQL 从包含 ;(分号)的数据框中读取一列。该列的名称是Profit & Gain。虽然在查询架构时列名的显示方式相同,但当我尝试使用 select 子句查询列时无法使用它。
spark.createDataFrame([[1,2],[2,3]], ["id", "Profit & Gain"]).createOrReplaceTempView("dex")
%sql select
`Profit & Gain` from dex
错误是:
Error in SQL statement: ParseException:
no viable alternative at input 'select \n`'(line 2, pos 0)
== SQL ==
select
`Profit &
^^^
我知道';'在列名中绝对是一种不好的做法,但我想知道是否有办法克服这个问题。我尝试使用反引号将其括起来,但没有用。
注意:这似乎使用 pyspark 工作得很好,但 spark sql 却失败了。 我注意到的另一件事是,除了 ;(分号)之外的任何字符都可以完美地工作。
【问题讨论】:
-
能否请您添加代码以重现问题?对我来说,以下代码有效:
df=spark.createDataFrame([[1,2],[2,3]], ["id", "Profit & Gain"]) df.select("Profit & Gain").show() -
@werner 编辑完成!
-
@halfwind22 - 你用的是什么火花版本?
-
@Vaebhav Azure Databricks Runtime 8.3(包括 Apache Spark 3.1.1、Scala 2.12)
标签: apache-spark pyspark apache-spark-sql databricks azure-databricks