在E-MapReduce的JupyterHub中,您可以直接运行Python任务,也可以通过Python3 Kernel中的魔术命令PySpark和SQL运行任务。本文通过示例为您介绍如何运行Python3
Kernel任务,以及Python3 Kernel中的魔术命令PySpark和SQL中的参数。
操作步骤
- 访问JupyterHub的Web UI,详情请参见管理JupyterHub。
- 在JupyterHub的Web UI页面,单击Notebook下的Python3。
- 单击
图标,上传Notebook示例文件。
在spark_magic_example.ipynb面板中,您可以查看提供的魔术命令PySpark和SQL。
- PySpark命令参数
set_spark_opts
该参数用于设置
Spark
运行时参数,可以配置任何运行环境中
Spark
版本支持的参数。配置接收字典型参数,示例如下。
conf = {
'spark.executor.instances': '3',
'spark.executor.memory': '2g',
}
%set_spark_opts $conf
get_spark_opts
该参数用于展示
Spark
运行时参数。示例如下。
%get_spark_opts
get_spark_session
按照设置的
Spark
运行时参数,在
EMR
集群中启动
Spark
作业并获取
Spark Session
接。可以接收字符串类型参数,含义为
Spark
作业名称。示例如下。
spark, sc = %get_spark_session test_application
注意 每个Notebook只能建立一个Spark Session,重复构建时会获取已经生成的Spark Session。
stop_spark_session
该参数用于终止Spark作业。
- SQL命令参数
sql
单元格中,可以编写多条SQL,使用分号(;)隔开。示例如下。%%sql
create table if not exists test_table_1 (a string, b int);
insert into test_table_1 values("abc", 1), ("def", 2);
select a, sum(b) from test_table_1 group by a
sql
单元格中,可以使用-o
参数,会将执行后的结果以pandas data frame模式传给指定变量,否则直接展示最后一条SQL的执行结果。示例如下。%%sql -o df #将执行结果传给df变量。
select a, sum(b) from test_table group by a
sql
单元格中,可以定义变量。示例如下。%%sql
select * from test_table where a = '{x}' # x在其它Cell中定义,通常用于Airflow调度程序。
- 单击上方的
图标,可以运行当前Cell。