apache spark sql - pyspark with HCatalog table in Zeppelin



我创建了一个表HCatalog表,其中的分区映射到 S3 中的一些 zip 文件。

在齐柏林飞艇中,我使用 %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")

当我运行它时,到目前为止一切顺利。然后,我创建了第二段来查询第 1 段中注册的f_req_2h表,如下所示:

第2段:

%sql
select * from f_req_2h limit 1;

我收到一个"table not found"错误。任何帮助或指针不胜感激。

这是

预期的行为。Spark 中的每个表或DataFrame都绑定到用于创建它的特定SQLContext,并且无法在其外部访问。

Apache Zeppelin初始化SparkContextSQLContext,它们在解释器之间共享,可以分别作为scsqlContext访问。如果您想从解释器互操作性中受益,则应使用这些实例,而不是创建另一个实例。换句话说,不要使用默认上下文创建自定义上下文。

感谢 zero323 的指点。我删除了HiveContext并修改了代码,如下所示,它可以工作:

%pyspark
f_req_2h = sqlContext.table( "default.f_req_2h" ) 
# a HCatalog table in the default schema"  
print f_req_sh.count()  
f_req_2h.registerTempTable("f_req_2h")

最新更新