2017-04-15 10 views
0

私は3ツェッペリン(0.6)のパラグラフを持っている:ツェッペリン%のSQL一時テーブルにアクセスすることはできません

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を使用したい)。

答えて

2

インタープリタ間の相互運用性は、Zeppelinから提供されたコンテキスト(sqlContext)を使用する場合にのみ提供されます。あなたがここに独自のコンテキストを作成したら:

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

それは%sqlTable not foundによって使用されるコンテキストにどのような方法で接続されていないが予想されるエラーです。

ソリューション:sqlContextを使用してテーブルを作成および登録します。

+1

おかげユーザー。もう少し説明できますか?これは、val df = hc.sql( "SELECT * FROM tweetsORC")をval df = sqlContext.sql( "SELECT * FROM tweetsORC")に変更することができますか? – schoon

+0

そうです。ありがとう! – schoon

関連する問題