Spark Zeppelin:如何在%pyspark解释器中获取%sql结果?

时间:2019-02-15 05:57:50

标签: apache-spark pyspark apache-spark-sql apache-zeppelin

我知道我可以使用

%pyspark
df = sqlContext.sql('select * from train_table')

我可以使用df.registerTempTable('xxx')使df中的%sql可以访问。

但是有时候我想使用%sql来绘制情节。计算范围可能很大:

%sql
select C.name, count(C.name) from orderitems as A
left join clientpagemodules as C on C.code = A.from_module
left join orders as B on A.ref_id = B.id
left join products as P on P.id = A.product_id
where B.time_create > (unix_timestamp(NOW()) -  3600*24*30) *1000  group by C.name

如果我决定编写一些代码来清除结果,则必须将sql以上移至df = sqlContext.sql(sql)中,然后重新计算。

我想知道有什么方法可以访问%pyspark中的%sql结果吗?

2 个答案:

答案 0 :(得分:0)

执行完sql语句后,我尚不知道如何执行此操作,但是在最初将其注册为temporary view时,可以从%pyspark访问%sql中创建的临时表:

%sql
--initial step
CREATE OR REPLACE TEMPORARY VIEW temp_bla AS select * from YOURSTATEMENT

%sql
--your work as usual
Select * from temp_bla

%pyspark
--and continuing in pyspark
spark.sql('select * from temp_bla').show()

答案 1 :(得分:0)

这是如何在另一个段落中将 SQL 表作为 Pandas 数据框获取的:

%sql(saveAs=choose_name)
SELECT * FROM your_table

%pyspark
dataframe = z.getAsDataFrame('choose_name')

As written in the Zeppelin %python docs