在E-MapReduce的JupyterHub中,您可以直接运行Python任务,也可以通过Python3 Kernel中的魔术命令PySpark和SQL运行任务。本文通过示例为您介绍如何运行Python3 Kernel任务,以及Python3 Kernel中的魔术命令PySpark和SQL中的参数。

前提条件

下载Notebook示例文件spark_magic_example.ipynb至本地目录。

操作步骤

  1. 访问JupyterHub的Web UI,详情请参见管理JupyterHub
  2. 在JupyterHub的Web UI页面,单击Notebook下的Python3。
    Python3
  3. 单击upload_icon图标,上传Notebook示例文件。
    upload

    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调度程序。
  4. 单击上方的run图标,可以运行当前Cell。