DataWorks大数据开发治理平台
DataWorks为您提供函数计算节点,您可通过该节点周期性调度处理事件函数,并完成与其它类型节点的集成和联合调度。本文为您介绍如何使用函数计算节点。
背景信息
DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎,为数据仓库、数据湖、湖仓一体等解决方案提供统一的全链路大数据开发治理平台。DataWorks数据开发(DataStudio)模块用于定义周期调度任务的开发及调度属性,与运维中心配合使用,面向各引擎(MaxCompute、Hologres、EMR等)提供可视化开发主界面,支持智能代码开发、多引擎混编工作流、规范化任务发布等能力,帮助您轻松构建离线数仓、实时数仓与即席分析系统,保证数据生产的高效稳定。
DataWorks的数据开发(DataStudio)可通过调用函数计算的事件函数来处理请求事件,通过配置节点的周期调度属性,发布到生产环境后,就可实现自动调度。
前提条件
DataWorks服务
函数计算
使用限制
- 功能限制
DataWorks目前仅支持调用事件函数,不支持调用HTTP函数。因此,若要在DataWorks周期性调度处理事件函数,则在创建函数时,需要创建用于处理事件请求的事件函数。
- 地域限制
DataWorks目前仅支持华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)、澳大利亚(悉尼)和印度(孟买)地域的工作空间使用函数计算功能。
注意事项
- 使用函数计算节点时,需基于已创建的服务调用待执行事件函数。选择服务时,若无法获取已创建的服务列表,则可能原因如下:
- 当前账号欠费:请充值后刷新节点配置页面重新尝试。
- 当前登录用户没有获取服务列表的权限:请联系阿里云主账号为您添加fc:ListServices权限,或直接赋予您 AliyunFCFullAccess权限,授权后请刷新节点配置页面重新尝试。授权操作,请参见为RAM用户授权。
- 若使用RAM用户(即子账号)进行函数计算节点开发,则需为该用户添加如下系统策略或自定义策略权限。
策略类型 策略描述 相关参考 系统策略 使用系统策略时,需授权用户 AliyunFCFullAccess
,或AliyunFCReadOnlyAccess
及AliyunFCInvocationAccess
权限策略。系统策略 自定义策略 使用自定义策略时,需授权用户如下所有权限策略。 fc:GetService
fc:ListServices
fc:GetFunction
fc:InvokeFunction
fc:ListFunctions
fc:GetFunctionAsyncInvokeConfig
fc:ListServiceVersions
fc:ListAliases
fc:GetAlias
fc:ListFunctionAsyncInvokeConfigs
fc:GetStatefulAsyncInvocation
fc:StopStatefulAsyncInvocation
自定义策略
步骤一:进入节点创建入口
- 进入数据开发。
- 登录DataWorks控制台。
- 在左侧导航栏,单击工作空间列表。
- 选择工作空间所在地域后,单击相应工作空间后的数据开发。
- 进入节点创建入口。在数据开发(DataStudio)界面,您可通过如下方式创建函数计算节点。
步骤二:创建并配置函数计算节点
- 创建函数计算节点。进入节点创建入口后,根据界面提示,配置新建节点的路径、名称等基本信息,创建节点。
- 配置函数计算节点参数。在节点编辑页面,根据业务需求,选择执行本次任务需调用的函数并配置其运行方式及变量详情。
参数 描述 选择服务 用于为函数提供相关运行资源。同一服务下的所有函数共享一些相同的设置,例如,服务授权和日志配置等。如果没有可用服务,则需新建,详情请参见创建服务。 选择版本或别名 选择后续调用函数时所使用的服务版本或别名。默认版本为 LATEST。 选择函数 选择此次任务执行所需调用的函数。如果没有可用函数,则需新建,详情请参见创建函数。 说明DataWorks目前仅支持调用事件函数,不支持调用HTTP函数。因此,若要在DataWorks周期性调度处理事件函数,则在创建函数时,需要创建用于处理事件请求的事件函数。
示例选择para_service_01_by_time_triggers
函数。创建该函数时,选择平台提供的定时触发函数的示例代码。代码逻辑如下。
更多函数的示例代码,请参见示例代码。import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # Parse the json evt = json.loads(event) triggerName = evt["triggerName"] triggerTime = evt["triggerTime"] payload = evt["payload"] logger.info('triggerName: %s', triggerName) logger.info("triggerTime: %s", triggerTime) logger.info("payload: %s", payload) return 'Timer Payload: ' + payload
调用方式 支持使用如下方式调用函数: 变量 基于实际应用,对函数中的变量进行赋值。该变量与函数计算产品中,目标函数详情页的 内容对应。示例对para_service_01_by_time_triggers
函数的相关变量传入如下参数。参数中,使用${}
格式定义了名为bizdate
的变量,该变量需在步骤4中赋值。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }
- 可选:调试运行函数计算节点。函数计算节点配置完成后,您可单击图标,指定任务运行的资源组并为代码变量赋值常量进行调试运行,测试节点代码逻辑是否正确。运行时,参数配置格式为
key=value
,输入多个参数时,需使用逗号(,)分隔。说明- 为保障任务高并发执行且无法错峰运行的情况下,当前任务能够定时调度执行,建议使用独享调度资源组。若无合适资源组,请重新创建,详情请参见新增和使用独享调度资源组。
- 更多任务调试运行详情,请参见调试运行任务。
- 配置节点的周期调度属性。DataWorks提供的调度参数,可实现调度场景下代码动态传参。在节点编辑页面定义函数变量后,需进入调度配置中为变量赋值。本文示例为变量
bizdate
赋值为前一天,即在函数计算节点定时运行时间的前一天,DataWorks会调度运行该节点。更多调度参数的配置,详情请参见配置调度参数。节点的更多调度属性,详情请参见任务调度属性配置概述。
步骤三:提交并发布节点
函数计算节点需要提交发布至生产环境后,才会自动调度运行。
- 保存并提交节点。
- 可选:发布节点。