我们尝试使用方括号[column name]
包装列名称,单个&双引号和反引号,它们都不起作用。
Spark SQL是否支持名称中包含空格的列?
谢谢!
答案 0 :(得分:29)
Backticks似乎工作正常:
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
所以它看起来像是受支持的,虽然我怀疑它是推荐的。
答案 1 :(得分:1)
不要像在T-SQL中那样使用括号[column name]
,而要使用反引号来包装列名`column name`
。这是您运行SQL的时间。您还可以在Spark SQL中使用反引号来包装列名,但使用三引号(由zero323回答)。