2016-07-30 40 views
1

我創建了一張表HCatalog表,其中分區映射到S3中的一些zip文件。pyspark與Zeppelin中的HCatalog表

在飛艇,我創建使用%pyspark模塊具有以下代碼的一段:

第1款:

%pyspark 
from pyspark.sql import HiveContext 

hc = HiveContext(sc) 
f_req_2h = hc.table("default.f_req_2h") # a HCatalog table in the default schema" 
print f_req_sh.count() 
f_req_2h.registerTempTable("f_req_2h") 

當我運行它,到目前爲止,一切順利。然後創建了一個第二段查詢f_req_2h表,這是在第1段中登記的,如下所示:

第2段:

%sql 
select * from f_req_2h limit 1; 

我得到一個"table not found"錯誤。任何幫助或指針表示讚賞。

回答

0

這是一個預期的行爲。 Spark中的每個表格或DataFrame均綁定到特定的SQLContext,該特定的SQLContext已用於創建它,並且無法在其外部進行訪問。

Apache Zeppelin初始化了解釋器之間共享的SparkContextSQLContext,可以分別訪問scsqlContext。如果您想從解釋器互操作性中受益,則應該創建這些實例,而不是創建另一個實例。換句話說,不要使用默認的上下文創建自定義上下文。

0

感謝您的指針zero323。我刪除了HiveContext和修改後的代碼如下所示,它的工作原理:

%pyspark f_req_2h = sqlContext.table( 「default.f_req_2h」)#在默認模式」 打印f_req_sh.count一個HCatalog表() f_req_2h.registerTempTable(「f_req_2h」)