本地调试作业

本文介绍Spark作业开发过程中,在本地上运行Spark作业并进行调试。

前提条件

  • 已开通云原生多模数据库 Lindorm计算引擎的外网地址。

  • 已将本地IP地址添加至Lindorm实例的白名单,具体操作请参见设置白名单

  • 已准备Spark作业项目。

本地运行Spark作业

  1. 已下载最新版Lindorm计算引擎环境的压缩包,下载链接为环境压缩包

  2. 解压下载的压缩包,解压的路径可以自定义。

  3. 在本地配置计算引擎的环境变量,将解压路径设置为SPARK_HOME环境变量。

    • Windows系统配置计算引擎的环境变量步骤如下:

      1. 打开本地的系统属性页面并单击环境变量属性页面

      2. 环境变量窗口,单击系统变量区域下的新建

      3. 新建系统变量窗口,输入以下参数。

        • 变量名:填写SPARK_HOME。

        • 变量值:输入压缩包解压的路径。

      4. 单击确定

      5. 单击应用

    • Linux系统配置计算引擎的环境变量,请执行export SPARK_HOME="<压缩包解压的路径>"命令并将该命令添加至 ~/.bashrc中。

  4. 打包Spark作业项目,并使用$SPARK_HOME/bin/spark-submit提交Spark作业。作业提交示例如下。

    1. Spark作业示例为例,下载并解压该项目。

    2. 配置以下参数:

      参数

      参数值

      说明

      spark.sql.catalog.lindorm_table.url

      ld-bp1z3506imz2f****-proxy-lindorm-pub.lindorm.rds.aliyuncs.com:30020。

      访问Lindorm宽表引擎的公网地址。请填写Lindorm实例宽表引擎的HBase Java API公网访问地址,仅支持相同Lindorm实例的宽表引擎访问。

      spark.sql.catalog.lindorm_table.username

      默认用户名root。

      访问Lindorm宽表引擎的用户名。

      spark.sql.catalog.lindorm_table.password

      默认密码root。

      访问Lindorm宽表引擎的密码。

      $SPARK_HOME/bin/spark-submit \
      # 您可以通过使用 --jars 添加作业依赖jar包,更多参数请参考 spark-submit -h
      --class com.aliyun.lindorm.ldspark.examples.LindormSparkSQLExample \
      lindorm-spark-examples/target/lindorm-spark-examples-1.0-SNAPSHOT.jar
      说明

      提交Spark作业项目时如果不指定运行方式,默认是在本地上运行,也可以通过spark.master=local[*]参数指定。

    3. 根据SQL代码中涉及的Schema,创建对应的库表结构。

    4. 使用mvn clean package进行作业打包。

  5. 完成作业的本地开发后,可以通过提交JAR作业的方式将Spark作业提交至云上运行,具体操作请参见步骤一:依赖配置,请将Spark作业中使用的连接地址修改为Lindorm计算引擎的专有网络连接地址。

调试Spark作业

Spark作业示例为例,通过IDEA软件调试Spark作业。IDEA软件下载地址为官网IDEA

  1. 执行步骤1步骤3

  2. 打开IDEA软件,配置pom.xml文件中Spark相关依赖为<scope>provided</scope>

    示例代码

  3. $SPARK_HOME/jars添加至项目依赖中。

    1. 在IDEA软件顶部菜单栏,选择File > Project Structure

    2. 在左侧导航栏,选择Project Settings > Libraries,单击+添加Java类库。

    3. 选择$SPARK_HOME/jars

    4. 单击OK

  4. 运行Spark作业程序。作业运行过程中,您可以根据日志中指定的链接地址查看SparkUI。

    2022/01/14 15:27:58 INFO SparkUI:Bound SparkUI to 0.0.0.0,and started at http://30.25.XX.XX:4040