Zeppelin%sql无法访问临时表

时间:2017-04-15 14:49:20

标签: sql scala apache-spark hive apache-zeppelin

我有三个Zeppelin(0.6)段落:

PARA1:

val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val df = hc.sql("SELECT * FROM tweetsORC")
z.put("wds", df)

PARA2:

import org.apache.spark.sql.DataFrame                            
import sqlContext.implicits._
import org.apache.spark.sql.functions._

val df = z.get("wds").asInstanceOf[DataFrame]
df.select(explode($"filtered").as("value")).groupBy("value").count().sort(desc("count")).show(20, false)
df.registerTempTable("top20")

para3各个:

%sql
select * from top20

这会出现以下错误:

Table not found: top20

我认为这是因为该表是hivecontext的一部分,而sql无法看到它。我已经看到一些类似问题的解决方案,建议创建一个sqlcontext是问题,但我没有这样做。那么%sql段如何访问临时表呢?任何指针都非常感谢。 (我想使用%sql来获得漂亮的内置图形。)

1 个答案:

答案 0 :(得分:2)

只有当您使用Zeppelin为您提供的上下文(作为sqlContext)时,才会提供解释器之间的互操作性。在这里创建自己的上下文后:

val hc = new org.apache.spark.sql.hive.HiveContext(sc)

它与%sql使用的上下文没有任何关联,而Table not found是预期的错误。

解决方案:使用sqlContext创建和注册表。