全部產品
Search
文件中心

Function Compute:DataWorks巨量資料開發治理平台

更新時間:Nov 13, 2024

DataWorks為您提供Function Compute節點,允許您通過自訂代碼實現不同業務需求。Function Compute節點支援周期性調度,便於執行定時任務。同時,該節點能夠與DataWorks其他類型節點配合使用,協助您構建完整的資料處理流程。本文將為您介紹如何建立並使用Function Compute節點。

背景資訊

DataWorks基於MaxCompute、Hologres、EMR、AnalyticDB、CDP等巨量資料引擎,為資料倉儲、資料湖、湖倉一體等解決方案提供統一的全鏈路巨量資料開發治理平台。DataWorks資料開發(DataStudio)模組用於定義周期調度任務的開發及調度屬性,與營運中心配合使用,面向各引擎(MaxCompute、Hologres、EMR等)提供可視化開發主介面,支援智能代碼開發、多引擎混編工作流程、正常化任務發布等能力,協助您輕鬆構建離線數倉、即時數倉與即席分析系統,保證資料生產的高效穩定。

DataWorks的資料開發(DataStudio)可通過調用Function Compute事件函數來處理請求事件,通過配置節點的周期調度屬性,發布到生產環境後,就可實現自動調度。

前提條件

使用限制

  • 功能限制

    DataWorks目前僅支援調用事件函數,不支援調用HTTP函數。因此,若要在DataWorks周期性調度處理事件函數,則在建立函數時,需要建立用於處理事件請求的事件函數。更多函數類型介紹,詳情請參見函數類型

  • 地區限制

    DataWorks目前僅支援華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、中國香港、新加坡、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、德國(法蘭克福)地區的工作空間使用Function Compute功能。

注意事項

  • 使用Function Compute節點時,需基於已建立的服務調用待執行事件函數。選擇服務時,若無法擷取已建立的服務列表,則可能原因如下:

    • 當前帳號欠費:請儲值後重新整理節點配置頁面重新嘗試。

    • 當前登入使用者沒有擷取服務列表的許可權:請聯絡阿里雲主帳號為您添加fc:ListServices許可權,或直接賦予您 AliyunFCFullAccess許可權,授權後請重新整理節點配置頁面重新嘗試。授權操作,請參見為RAM使用者授權

  • 使用DataWorks的Function Compute節點運行函數時,若運行時間長度超過1小時,請將DataWorksFunction Compute節點的調用方式配置為非同步呼叫。Function Compute非同步呼叫的介紹,請參考非同步呼叫

  • 若使用RAM使用者(即子帳號)進行Function Compute節點開發,則需為該使用者添加如下系統策略或自訂策略許可權。

    策略類型

    策略描述

    相關參考

    系統策略

    使用系統策略時,需授權使用者AliyunFCFullAccess,或AliyunFCReadOnlyAccessAliyunFCInvocationAccess權限原則。

    系統策略

    自訂策略

    使用自訂策略時,需授權使用者如下所有權限原則。

    • fc:GetService

    • fc:ListServices

    • fc:GetFunction

    • fc:InvokeFunction

    • fc:ListFunctions

    • fc:GetFunctionAsyncInvokeConfig

    • fc:ListServiceVersions

    • fc:ListAliases

    • fc:GetAlias

    • fc:ListFunctionAsyncInvokeConfigs

    • fc:GetStatefulAsyncInvocation

    • fc:StopStatefulAsyncInvocation

    自訂策略

步驟一:進入節點建立入口

  1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 進入節點建立入口。

    在資料開發(DataStudio)介面,您可通過如下方式建立Function Compute節點。Function Compute節點建立入口

步驟二:建立並配置Function Compute節點

  1. 建立Function Compute節點。

    進入節點建立入口後,根據介面提示,配置建立節點的路徑、名稱等基本資料,建立節點。

  2. 配置Function Compute節點參數。

    在節點編輯頁面,根據業務需求,選擇執行本次任務需調用的函數並配置其運行方式及變數詳情。配置節點參數

    參數

    描述

    選擇服務

    用於為函數提供相關運行資源。同一服務下的所有函數共用一些相同的設定,例如,服務授權和日誌配置等。如果沒有可用服務,則需建立,詳情請參見建立服務

    選擇版本或別名

    選擇後續調用函數時所使用的服務版本或別名。預設版本為 LATEST

    • 服務版本

      Function Compute提供服務等級的版本控制功能,支援您為自己的服務發布一個或多個版本。當發布版本時,Function Compute會為服務產生快照,包括服務的配置、服務內的函數代碼及函數配置,但不包括觸發器,並自動分配一個版本號碼與其關聯,以供後續使用。發布版本,詳情請參見發布版本

    • 版本別名

      Function Compute支援為服務的版本建立別名。別名用於指向特定版本,您可利用別名輕鬆實現發布、復原以及灰階發布等功能。別名無法脫離服務或版本單獨存在。使用別名訪問服務或函數時,Function Compute會將別名解析為其指向的版本,調用方無需瞭解別名指向的具體版本。建立別名,詳情請參見建立別名

    選擇函數

    選擇此次任務執行所需調用的函數。如果沒有可用函數,則需建立,詳情請參見建立函數

    說明

    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

    更多函數的範例程式碼,請參見範例程式碼

    調用方式

    支援使用如下方式調用函數:

    • 同步調用:該方式事件將直接觸發函數,Function Compute會運行該函數並等待響應,當函數調用完成後,Function Compute直接返回執行結果。

    • 非同步呼叫:該方式Function Compute會將事件請求先持久化後再立即返迴響應,而不是等待請求執行完成後才返迴響應。

      • 若函數存在耗時較長、資源消耗較大或易錯邏輯,可採用非同步呼叫,提升程式響應速度,更加可靠地應對突發流量。

      • 運行時間長度超過1小時的Function Compute任務,請使用非同步呼叫。

    變數

    基於實際應用,對函數中的變數進行賦值。該變數與Function Compute產品中,目標函數詳情頁的測試函數 > 配置測試事件內容對應。

    樣本對para_service_01_by_time_triggers函數的相關變數傳入如下參數。參數中,使用${}格式定義了名為bizdate的變數,該變數需在步驟4中賦值。

    {
        "payload": "payload1",
        "triggerTime": "${bizdate}",
        "triggerName": "triggerName1"
    }
  3. 可選:調試運行Function Compute節點。

    Function Compute節點配置完成後,您可單擊運行表徵圖,指定任務啟動並執行資源群組並為代碼變數賦值常量進行調試運行,測試節點代碼邏輯是否正確。運行時,參數配置格式為key=value,輸入多個參數時,需使用逗號(,)分隔。

    說明
    • 為保障任務高並發執行且無法錯峰啟動並執行情況下,當前任務能夠定時調度執行,建議使用獨享調度資源群組。若無合適資源群組,請重新建立,詳情請參見新增和使用獨享調度資源群組

    • 更多任務調試運行詳情,請參見調試運行任務

  4. 配置節點的周期調度屬性。

    DataWorks提供的調度參數,可實現調度情境下代碼動態傳參。在節點編輯頁面定義函數變數後,需進入調度配置中為變數賦值。本文樣本為變數bizdate賦值為前一天,即在Function Compute節點定時已耗用時間的前一天,DataWorks會調度運行該節點。更多調度參數的配置,詳情請參見配置調度參數配置節點周期性調度節點的更多調度屬性,詳情請參見任務調度屬性配置概述

步驟三:提交並發布節點

Function Compute節點需要提交發布至生產環境後,才會自動調度運行。

  1. 儲存並提交節點。

    單擊工具列中的儲存提交表徵圖,儲存並提交節點。提交節點時,請根據提示輸入變更描述,並根據需要選擇是否進行程式碼檢閱及煙霧測試 (Smoke Test)。

    說明
    • 您需在調度配置中設定節點的重跑屬性依賴的上遊節點,才可以提交節點。

    • 開啟程式碼檢閱後,開發人員提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱

    • 為保障調度節點任務執行符合預期,建議您在發布前對任務進行煙霧測試 (Smoke Test),詳情請參見煙霧測試 (Smoke Test)

  2. 可選:發布節點。

    如果您使用的是標準模式的工作空間,提交成功後,需單擊右上方的發布,發布節點。相關介紹請參見標準模式的工作空間發布任務

後續步驟