Databricks如何将%sql单元格的查询结果赋值给Python变量
解决方案
这个需求完全可以实现,主流支持Spark的 Notebook 环境(如Databricks Notebook、Jupyter PySpark内核)都提供了对应能力,具体操作方法如下:
方法1:使用%sql魔术命令的输出参数(最简便)
你只需要修改cell 2的%sql命令,增加输出变量参数即可:
%sql -o diamond_df select * from diamonds
其中-o diamond_df的作用是将本次SQL查询的结果直接赋值给名为diamond_df的变量,该变量为PySpark DataFrame类型,和你cell 1里通过spark.sql返回的ds变量属性完全一致。
之后你cell 3的代码可以直接写为:
display(diamond_df)
你还可以对diamond_df执行filter、groupBy等所有PySpark DataFrame支持的操作。
方法2:通用兼容方案
如果你的Notebook环境不支持%sql的输出参数,可以用变量统一管理SQL语句,同时适配SQL单元格执行和Python变量调用:
- 先在Python单元格定义SQL语句变量:
diamond_sql = "select * from diamonds"
- 要在SQL单元格执行时直接调用变量即可:
%sql $diamond_sql
- 要赋值给Python变量时直接用
spark.sql方法:
diamond_df = spark.sql(diamond_sql) display(diamond_df)
内容的提问来源于stack exchange,提问作者Jerry Nixon
相关产品推荐
相关产品推荐

