ODPS Spark节点支持使用Java和Python处理数据,本文为您介绍如何新建和配置ODPS Spark节点。

背景信息

Python资源是针对Python UDF进行开发,能够获取的可以直接依赖的三方包较为有限,因此使用Python资源的局限性较大。如果您需要使用Python资源中未支持的三方包,请参见在MaxCompute UDF中运行Scipy

PyODPS 2和PyODPS 3节点对Python资源的支持性更强大,详情请参见创建PyODPS 2节点创建PyODPS 3节点

本文分别为您介绍如何创建JAR资源和Python资源,并在创建ODPS Spark节点后加载不同类型的资源,您可以根据业务需求进行操作。

创建JAR资源

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的数据开发
  2. 鼠标悬停至新建图标,单击MaxCompute > 资源 > JAR
    您也可以找到相应的业务流程,右键单击MaxCompute,选择新建 > 资源 > JAR
  3. 新建资源对话框中,输入资源名称,并选择目标文件夹
    说明
    • 如果绑定多个实例,则需要选择MaxCompute引擎实例
    • 如果该JAR包已经在MaxCompute(ODPS)客户端上传过,则需要取消勾选上传为ODPS资源,否则上传会报错。
    • 资源名称无需与上传的文件名保持一致。
    • 资源名称命名规范:1~128个字符,字母、数字、下划线、小数点,大小写不敏感,JAR资源的后缀为.jar,Python资源的后缀为.py
  4. 单击点击上传,选择相应的文件进行上传。
    WordCount的示例代码请参见WordCount
  5. 单击新建
  6. 单击工具栏中的提交图标,上传文件。
  7. 提交新版本对话框中,输入变更描述,单击确认

创建Python资源

  1. 数据开发页面,鼠标悬停至新建图标,单击MaxCompute > 资源 > Python
    您也可以找到相应的业务流程,右键单击MaxCompute,选择新建 > 资源 > Python
  2. 新建资源对话框中,输入资源名称,并选择目标文件夹
    说明
    • 如果绑定多个实例,则需要选择MaxCompute引擎实例
    • 资源名称只能包含中文、字母、数字、点、下划线(_)、减号(-),且必须加后缀名.py
    • 创建的Python资源仅支持Python 2.x和Python 3.x版本的Python代码。
  3. 单击新建
  4. 在节点的编辑页面,输入Python代码。
    代码示例如下,仅进行校检数值判断,非数据业务处理逻辑。
    # -*- coding: utf-8 -*-
    import sys
    from pyspark.sql import SparkSession
    
    try:
        # for python 2
        reload(sys)
        sys.setdefaultencoding('utf8')
    except:
        # python 3 not needed
        pass
    
    if __name__ == '__main__':
        spark = SparkSession.builder\
            .appName("spark sql")\
            .config("spark.sql.broadcastTimeout", 20 * 60)\
            .config("spark.sql.crossJoin.enabled", True)\
            .config("odps.exec.dynamic.partition.mode", "nonstrict")\
            .config("spark.sql.catalogImplementation", "odps")\
            .getOrCreate()
    
    def is_number(s):
        try:
            float(s)
            return True
        except ValueError:
            pass
    
        try:
            import unicodedata
            unicodedata.numeric(s)
            return True
        except (TypeError, ValueError):
            pass
    
        return False
    
    print(is_number('foo'))
    print(is_number('1'))
    print(is_number('1.3'))
    print(is_number('-1.37'))
    print(is_number('1e3'))
  5. 单击工具栏中的提交图标,上传文件。
  6. 提交新版本对话框中,输入变更描述,单击确认

创建ODPS Spark节点

  1. DataStudio(数据开发)页面,鼠标悬停至新建图标,单击MaxCompute > ODPS Spark
    您也可以打开相应的业务流程,右键单击MaxCompute,选择新建 > ODPS Spark
  2. 新建节点对话框中,输入节点名称,并选择目标文件夹
  3. 单击提交
  4. 在ODPS Spark编辑页面,配置各项参数。ODPS Spark的详情请参见概述
    ODPS Spark节点支持两种spark版本语言。选择不同的语言,会显示相应不同的配置,您可以根据界面提示进行配置:
    • 选择语言Java/Scala,配置如下。Spark任务配置
      参数描述
      spark版本包括Spark1.xSpark2.x两个版本。
      语言此处选择Java/Scala
      选择主jar资源从下拉列表中选择您已上传的JAR资源。
      配置项单击添加一条,即可配置keyvalue
      Main Class选择类名称。
      参数添加参数,多个参数之间用空格分隔。支持使用调度参数,配置中直接使用${变量名},在右侧调度配置参数处给变量赋值。调度参数支持的赋值格式请参见调度参数支持的格式
      说明 您需要在配置调度参数后,再在编辑页面配置节点参数,系统会顺序执行。
      选择jar资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的JAR资源。
      选择file资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的File资源。
      选择archives资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的Archives资源,仅展示压缩类型的资源。
    • 选择语言Python,配置如下。saprk节点配置
      参数描述
      spark版本包括Spark1.xSpark2.x两个版本。
      语言此处选择Python
      选择主python资源从下拉列表中选择您已创建的Python资源。
      配置项单击添加一条,即可配置keyvalue
      参数添加参数,多个参数之间用空格分隔。支持使用调度参数,配置中直接使用${变量名},在右侧调度配置参数处给变量赋值。调度参数使用方式请参考文档:调度参数支持的格式
      选择python资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的Python资源。
      选择file资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的File资源。
      选择archives资源ODPS Spark节点根据上传的文件类型自动过滤,选择下拉框中显示的您已上传的Archives资源,仅展示压缩类型的资源。
  5. 单击节点编辑区域右侧的调度配置,配置节点的调度属性,详情请参见配置基础属性
  6. 保存并提交节点。
    重要 您需要设置节点的重跑属性依赖的上游节点,才可以提交节点。
    1. 单击工具栏中的保存图标,保存节点。
    2. 单击工具栏中的提交图标。
    3. 提交新版本对话框中,输入变更描述
    4. 单击确认
    如果您使用的是标准模式的工作空间,提交成功后,请单击右上方的发布。具体操作请参见发布任务
  7. 任务运维,详情请参见周期任务运维概述