我知道我可以使用
%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结果吗?
答案 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')