2016-07-30 36 views
1

Ich habe eine Tabelle HCatalog Tabelle mit Partitionen Zuordnung zu einigen Zip-Dateien in S3 erstellt.pyspark mit HCatalog Tabelle in Zeppelin

In Zeppelin, habe ich einen Absatz die %pyspark Modul mit folgenden Codes:

Absatz 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") 

Als ich es lief, so weit so gut. Dann habe ich einen zweiten Absatz die f_req_2h Tabelle abzufragen, die in Absatz 1 registriert wurde, wie folgt:

Ziffer 2:

%sql 
select * from f_req_2h limit 1; 

Ich habe eine "table not found" Fehler. Jede Hilfe oder Zeiger wird geschätzt.

Antwort

0

Dies ist ein erwartetes Verhalten. Jede Tabelle oder DataFrame in Spark ist an eine bestimmte SQLContext gebunden, mit der sie erstellt wurde und auf die nicht außerhalb zugegriffen werden kann.

Apache Zeppelin initialisiert sowohl SparkContext und SQLContext die zwischen Dolmetscher gemeinsam benutzt werden und kann als scsqlContext und jeweils abgerufen werden. Sie sollten diese Instanzen nicht erstellen, wenn Sie von Interoperabilität Interpreter profitieren möchten. Mit anderen Worten: Erstellen Sie keinen benutzerdefinierten Kontext, indem Sie den Standardkontext verwenden.

0

Danke null323 für Ihren Zeiger. Ich entfernte die HiveContext und überarbeitete den Code wie folgt und es funktioniert:

% pyspark f_req_2h = sqlContext.table ("default.f_req_2h") # eine HCatalog Tabelle im Standardschema“ Druck f_req_sh.count() f_req_2h.registerTempTable ("f_req_2h")