Zeppelin 中带有 HCatalog table 的 pyspark
pyspark with HCatalog table in Zeppelin
我创建了一个 table HCatalog
table 分区映射到 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_2htable,如下:
第 2 段:
%sql
select * from f_req_2h limit 1;
我收到 "table not found"
错误。感谢任何帮助或指点。
这是预期的行为。 Spark 中的每个 table 或 DataFrame
都绑定到一个特定的 SQLContext
,该 SQLContext
已用于创建它并且无法在其外部访问。
Apache Zeppelin 初始化 SparkContext
和 SQLContext
,它们在解释器之间共享,可以分别作为 sc
和 sqlContext
访问。如果您想从解释器互操作性中获益,则应该使用这些实例,而不是创建另一个实例。换句话说,不要使用默认上下文创建自定义上下文。
感谢 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")
我创建了一个 table HCatalog
table 分区映射到 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_2htable,如下:
第 2 段:
%sql
select * from f_req_2h limit 1;
我收到 "table not found"
错误。感谢任何帮助或指点。
这是预期的行为。 Spark 中的每个 table 或 DataFrame
都绑定到一个特定的 SQLContext
,该 SQLContext
已用于创建它并且无法在其外部访问。
Apache Zeppelin 初始化 SparkContext
和 SQLContext
,它们在解释器之间共享,可以分别作为 sc
和 sqlContext
访问。如果您想从解释器互操作性中获益,则应该使用这些实例,而不是创建另一个实例。换句话说,不要使用默认上下文创建自定义上下文。
感谢 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")