在registerTempTable之后找不到Spark SQL表

时间:2017-12-05 07:07:53

标签: sql scala apache-spark

我试图在将我的数据帧添加到临时表后运行sql查询,但每次都显示未找到的表。

emp是数据框的名称。

命令

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)

1 个答案:

答案 0 :(得分:0)

我解决了这些问题。显然我直接使用从RDD创建的DF。如果我创建DF的副本(从RDD派生),registerTempTable将起作用。谢谢你的帮助。