在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。