Spark EMR集群Jupyter中%%spark_sql命令作用、来源及参数咨询
%%spark_sql 问题解答
技术归属与来源
%%spark_sql是AWS EMR专属的Jupyter扩展魔法命令,不属于原生Spark、PySpark或者开源Jupyter的默认语法,是AWS为EMR Notebook/EMR Studio场景定制的交互功能,这也是你用通用关键词检索不到对应内容的核心原因。
核心作用
该单元格魔法命令可以直接将当前单元格内的内容识别为Spark SQL语句提交到集群执行,无需手动编写spark.sql(xxx)的PySpark调用代码,也无需额外编写结果打印逻辑,大幅简化EMR环境下的Spark SQL交互流程。
常用参数含义
-s:布尔类型参数,可选值true/false,用于控制SQL执行完成后是否自动展示结果集,默认值为true。你给出的示例%%spark_sql -s true就是显式指定执行SQL后自动打印查询结果。-n:数值类型参数,传入正整数即可,用于控制自动展示结果时返回的最大行数,默认值一般为100,比如%%spark_sql -n 20就代表最多展示20条查询结果。- 其他常用可选参数:
-c:指定执行SQL对应的Spark会话名称,适用于多Spark会话隔离的场景-o:指定结果集对应的Python变量名,查询完成后可以直接在后续Python/PySpark单元格中调用该变量做进一步处理
常见使用示例
基础执行,展示默认行数结果
%%spark_sql SELECT * FROM tmp.test_df WHERE age > 18
限定展示10条结果
%%spark_sql -n 10 SELECT user_id, register_time FROM prod.user_info LIMIT 100
结果写入Python变量、不自动展示
%%spark_sql -s false -o user_consume_df SELECT user_id, sum(consume_amount) as total_consume, count(order_id) as order_cnt FROM prod.order_info GROUP BY user_id
执行完成后,你可以直接在后续单元格中使用user_consume_df变量进行数据分析。
内容的提问来源于stack exchange,提问作者einkleindatagal
相关产品推荐
相关产品推荐

