如何在Spark SQL中表示名称包含空格的列

时间:2015-10-10 10:45:36

标签: apache-spark apache-spark-sql

我们尝试使用方括号[column name]包装列名称,单个&双引号和反引号,它们都不起作用。

Spark SQL是否支持名称中包含空格的列?

谢谢!

2 个答案:

答案 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回答)。