【发布时间】:2022-01-09 17:35:23
【问题描述】:
我们尝试用方括号 [column name]、单引号和双引号以及反引号将列名括起来,但它们都不起作用。
Spark SQL 是否支持名称中包含空格的列?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql
我们尝试用方括号 [column name]、单引号和双引号以及反引号将列名括起来,但它们都不起作用。
Spark SQL 是否支持名称中包含空格的列?
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql
反引号似乎工作得很好:
scala> val df = sc.parallelize(Seq(("a", 1))).toDF("foo bar", "x")
df: org.apache.spark.sql.DataFrame = [foo bar: string, x: int]
scala> df.registerTempTable("df")
scala> sqlContext.sql("""SELECT `foo bar` FROM df""").show
foo bar
a
同DataFrame API:
scala> df.select($"foo bar").show
foo bar
a
所以看起来它是受支持的,尽管我怀疑它是否被推荐。
【讨论】:
foo bar ..."""
sc.parallelize 它可以工作,但是当我尝试spark.read.schema(schema).parquet("D:\\path") 时,即使我用空格指定架构时也会出错。
不要像在 T-SQL [column name] 中那样使用括号,而是使用 反引号 来包装列名 `column name`。这是您运行 SQL 的时候。您还可以在 spark SQL 中使用反引号来包装列名,但使用 zero323 回答的三引号。
【讨论】: