【问题标题】:Spark zeppelin: how to obtain %sql result in %pyspark interpreter?Spark zeppelin:如何在 %pyspark 解释器中获取 %sql 结果?
【发布时间】:2019-07-09 05:57:30
【问题描述】:

我知道我可以使用

%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 结果?

【问题讨论】:

  • %sql%pyspark 是什么?您使用的是数据块还是其他笔记本工具?
  • @Steven 对不起,我忘了添加 zeppelin 标签,现在添加。

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


【解决方案1】:

我不知道在你执行完你的 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()

【讨论】:

    【解决方案2】:

    这就是您如何将另一段中的 SQL 表作为 pandas 数据框获取:

    %sql(saveAs=choose_name)
    SELECT * FROM your_table
    
    %pyspark
    dataframe = z.getAsDataFrame('choose_name')
    

    As written in the Zeppelin %python docs

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2019-12-03
      • 2016-11-07
      • 1970-01-01
      • 2018-04-13
      • 2017-08-18
      • 1970-01-01
      • 2019-01-25
      • 2016-07-26
      相关资源
      最近更新 更多