寄存器电位后找不到SPARK SQL表



我在将数据框添加到临时表之后,尝试运行SQL查询,但每次显示未找到表。

emp是dataframe的名称。

命令

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
sqlContext: org.apache.spark.sql.SQLContext = org.apache.spark.sql.SQLContext@6cb7a4c1
scala> import sqlContext.implicits._
import sqlContext.implicits._
scala> emp.registerTempTable("people")
scala> val teenagers = sqlContext.sql("SELECT name FROM people WHERE id >= 100 AND id <= 105")
java.lang.RuntimeException: Table Not Found: people
    at scala.sys.package$.error(package.scala:27)
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111)
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog$$anonfun$1.apply(Catalog.scala:111)
    at scala.collection.MapLike$class.getOrElse(MapLike.scala:128)
    at scala.collection.AbstractMap.getOrElse(Map.scala:58)
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:111)

我解决了它。显然,我直接使用了从RDD创建的DF。如果我创建DF的副本(从RDD派生),则寄存器Temptable将起作用。感谢您的帮助。

最新更新