【问题标题】:pyspark with HCatalog table in ZeppelinZeppelin中带有HCatalog表的pyspark
【发布时间】:2016-12-05 08:04:03
【问题描述】:

我创建了一个表 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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      感谢 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")
      

      【讨论】:

        猜你喜欢
        • 2016-03-06
        • 2021-04-04
        • 2017-07-14
        • 2017-01-06
        • 2021-07-15
        • 2019-08-09
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多