Lindorm Spark节点

DataWorksLindorm Spark节点可进行Lindorm Spark任务的开发和周期性调度。本文为您介绍使用Lindorm Spark节点进行任务开发的主要流程。

背景信息

Lindorm是基于云原生架构的分布式计算服务,支持社区版计算模型、兼容Spark接口,并深度融合Lindorm存储引擎特性。能够利用底层数据存储特征及索引能力,高效完成分布式作业任务,适用于海量数据处理、交互式分析、机器学习和图计算等场景。

前提条件

  • (可选,RAM账号需要)进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发空间管理员(权限较大,谨慎添加)角色权限,添加成员的操作详情请参见为工作空间添加空间成员

    说明

    如果您使用的是主账号,则忽略该添加操作。

  • 已创建Lindorm实例并绑定至DataWorks工作空间,详情请参见绑定Lindorm计算资源

新建Lindorm Spark节点

新建入口参考:创建Lindorm Spark节点

开发Lindorm Spark节点

您可根据语言类型(如Java/Scala、Python)的不同,在节点中配置引用对应的JAR包文件或.py文件。

节点内容配置说明(Java/Scala语言类型)

通过在DataWorks中执行Spark示例程序SparkPi为例,为您介绍如何配置和使用Lindorm Spark节点。

上传Jar资源

您需将示例Jar包资源上传至LindormDFS中,并复制Jar资源存储路径,以供后续在节点中配置引用。

  1. 准备示例Jar包资源。

    将该示例Jar包资源spark-examples_2.12-3.3.0.jar下载到本地。

  2. 上传Jar包资源到LindormDFS。

    1. 登录Lindorm管理控制台,在对应地域的实例列表中,找到您所创建的Lindorm实例。

    2. 单击该实例名称,进入实例详情页。

    3. 在左侧导航栏中,单击计算引擎,进入计算引擎页面。

    4. 作业管理页签中单击上传资源按钮,进入上传资源页面。

    5. 单击上传虚线框区域,找到并打开您下载到本地的Jar包资源。

    6. 单击上传,完成Jar包资源的上传。

  3. 复制示例Jar资源存储路径。

    作业管理页签,找到上传资源按钮下方您所上传的Jar包资源,单击资源文件左侧的image图标,即可复制您所上传的Jar资源在LindormDFS的存储路径。

配置节点内容

您可参照以下参数配置信息,配置Lindorm Spark节点内容。

语言类型

参数名称

参数描述

Java/Scala

Jar资源

输入您在上传Jar资源中复制的示例Jar资源存储路径。

Main Class

为您实际编译的JAR包中的任务主Class。示例代码中的主类名称为org.apache.spark.examples.SparkPi

参数

填写您所需传入代码的参数信息。您可将该参数配置为动态参数${var}

配置项

您可在此配置Spark程序运行参数,更多Spark属性参数设置,请参考作业配置说明

说明

您可以在绑定Lindorm计算资源时设置全局Spark参数。

节点内容配置说明(Python语言类型)

通过在DataWorks中执行Spark示例程序计算圆周率,为您介绍如何配置和使用Lindorm Spark节点。

上传Python资源

您需将示例Python资源文件上传至LindormDFS中,并复制Jar资源存储路径,以供后续在节点中配置引用。

  1. 创建Python资源文件。

    您可以将下面提供的Python脚本保存为本地文件,并命名为 pi.py

    import sys
    from random import random
    from operator import add
    
    from pyspark.sql import SparkSession
    
    if __name__ == "__main__":
        """
            Usage: pi [partitions]
        """
        spark = SparkSession\
            .builder\
            .appName("PythonPi")\
            .getOrCreate()
    
        partitions = int(sys.argv[1]) if len(sys.argv) > 1 else 2
        n = 100000 * partitions
    
        def f(_: int) -> float:
            x = random() * 2 - 1
            y = random() * 2 - 1
            return 1 if x ** 2 + y ** 2 <= 1 else 0
    
        count = spark.sparkContext.parallelize(range(1, n + 1), partitions).map(f).reduce(add)
        print("Pi is roughly %f" % (4.0 * count / n))
    
        spark.stop()
    
  2. 上传Python资源文件到LindormDFS。

    1. 登录Lindorm管理控制台,在对应地域的实例列表中,找到您所创建的Lindorm实例。

    2. 单击该实例名称,进入实例详情页。

    3. 在左侧导航栏中,单击计算引擎,进入计算引擎页面。

    4. 作业管理页签中单击上传资源按钮,进入上传资源页面。

    5. 单击上传虚线框区域,找到并打开您在本地创建的Python资源文件。

    6. 单击上传,完成Python资源文件的上传。

  3. 复制示例Python资源文件存储路径。

    作业管理页签,找到上传资源按钮下方您所上传的Python资源文件,单击资源文件左侧的image图标,即可复制您所上传的Python资源文件在LindormDFS的存储路径。

配置节点内容

您可参照以下参数配置信息,配置Lindorm Spark节点内容。

语言类型

参数名称

参数描述

Python

主程序包

输入您在上传Python资源中复制的示例Python资源文件存储路径。

参数

填写您所需传入代码的参数信息。您可将该参数配置为动态参数${var}

配置项

您可在此配置Spark程序运行参数,更多Spark属性参数设置,请参见作业配置说明

调试Lindorm Spark节点

  1. 配置调试属性。

    您可在节点右侧调试配置中配置计算资源Lindorm资源组资源组信息,具体参数信息如下。

    参数名称

    描述

    计算资源

    选择您所绑定的Lindorm计算资源。

    Lindorm资源组

    选择您在绑定Lindorm计算资源时设置的Lindorm资源组。

    资源组

    选择您绑定Lindorm Spark计算资源时已通过测试连通性的资源组。

    脚本参数

    在配置节点内容时,通过${参数名}的方式定义变量,需要在脚本参数处配置参数名参数值信息,任务运行时会将它动态替换为真实的取值。详情请参见调度参数支持格式

  2. 调试运行节点。

    执行节点任务,您需单击保存运行节点任务。

后续步骤

  • 节点调度:若项目目录下的节点需要周期性调度执行,您需要在节点右侧的调度配置中设置调度策略,配置相关的调度属性。

  • 节点发布:若任务需要发布至生产环境执行,请单击界面image图标唤起发布流程,通过该流程将任务发布至生产环境。项目目录下的节点只有在发布至生产环境后,才会进行周期性调度。

  • 数据地图(Lindorm表数据):您可以前往数据地图采集Lindorm的元数据信息。