我们尝试使用方括号[column name]
、单引号和双引号以及反引号来包装列名,但都无法正常工作。
Spark SQL是否支持包含空格的列名?
我们尝试使用方括号[column name]
、单引号和双引号以及反引号来包装列名,但都无法正常工作。
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
看起来它是被支持的,不过我怀疑它并不被推荐。
在运行SQL时,不要像T-SQL那样使用方括号[列名]
,而是使用反引号来包含列名`列名`
。在Spark SQL中,您也可以使用反引号来包含列名,但需要使用三个引号,如zero323所回答的。
foo bar
...""" - spatssc.parallelize
可以正常工作,但当我尝试使用spark.read.schema(schema).parquet("D:\\path")
时,即使我指定了带空格的模式,也会出现错误。