与Zeppelin的HCatalog表的pyspark

问题描述 投票:1回答:2

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

在Zeppelin中,我使用%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"错误。任何帮助或指针都表示赞赏。

pyspark apache-spark-sql apache-zeppelin
2个回答
0
投票

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

Apache Zeppelin初始化了SQLContextsc,它们在解释器之间共享,并且可以分别作为sqlContext%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") 访问。如果您希望从解释器互操作性中受益,那么您应该使用这些实例,而不是创建另一个实例。换句话说,不要使用默认上下文创建自定义上下文。


0
投票

感谢zero323为你的指针。我删除了HiveContext并修改了代码,如下所示:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.