我试图在将我的数据帧添加到临时表后运行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)
答案 0 :(得分:0)
我解决了这些问题。显然我直接使用从RDD创建的DF。如果我创建DF的副本(从RDD派生),registerTempTable将起作用。谢谢你的帮助。