我正在運行以下 spark sql,它將獲取所有資料:
scala> spark.sql("select * from t1").show()
------ ---- -------
| 名稱|年齡|address|
------ ---- -------
|jeremy| 33| Taipei|
| Mary| 18| Taipei|
| John| 28| XXX|
| 大明| 29| YYY|
| 小黃| 19| ZZZ|
------ ---- -------
但是當我添加一個過濾器,將它命名為名稱時,Spark SQL 無法識別它。
scala> spark.sql("select * from t1 where 名稱=='jeremy'").show()
org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input '名' expecting <EOF>(line 1, pos 23)
== SQL ==
select * from t1 where 名稱=='jeremy'
-----------------------^^^
at org.apache.spark.sql.catalyst.parser.ParseException.withCommand(ParseDriver.scala:241)
at org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parse(ParseDriver.scala:117)
at org.apache.spark.sql.execution.SparkSqlParser.parse(SparkSqlParser.scala:48)
at org.apache.spark.sql.catalyst.parser.AbstractSqlParser.parsePlan(ParseDriver.scala:69)
at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:643)
... 49 elided
scala> spark.sql("select * from t1 where '名稱'=='jeremy'").show()
---- ---- -------
|名稱|年齡|address|
---- ---- -------
---- ---- -------
有人知道怎么做這個嗎?
謝謝
uj5u.com熱心網友回復:
您需要使用反引號(`)。
spark.sql("select * from t1 where `名稱`=='jeremy'").show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365956.html
