Zeppelin %sql 无法访问临时 table

Zeppelin %sql cannot access temporary table

我有三个 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

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

解释器之间的互操作性仅在您使用 Zeppelin 为您提供的上下文时提供(如 sqlContext)。在此处创建自己的上下文后:

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

它没有以任何方式连接到 %sql 使用的上下文,Table not found 是预期的错误。

解决方法:使用sqlContext创建并注册表。