日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MaxCompute UDF概述

UDF(User-Defined Function)即自定義函數,當MaxCompute提供的內建函數無法支撐您的業務實現時, 您可以根據本文中的開發流程及使用示例,自行編寫代碼邏輯創建自定義函數,以滿足多樣化業務需求。

背景信息

廣義的UDF定義是自定義標量函數(UDF)自定義表值函數(UDTF)自定義聚合函數(UDAF)三種類型的自定義函數的集合。狹義的UDF僅代表用戶自定義標量函數。MaxCompute UDF支持的自定義函數類型如下。

自定義函數類型

名稱

應用場景

UDF

User Defined Scalar Function。用戶自定義標量函數。

適用于一進一出業務場景。即其輸入與輸出是一對一的關系,讀入一行數據,輸出一個值。

UDTF

User Defined Table Valued Function。用戶自定義表值函數,又稱表格UDF。

適用于一進多出業務場景。即其輸入與輸出是一對多的關系,讀入一行數據,輸出多個值可視為一張表。

UDAF

User Defined Aggregation Function。用戶自定義聚合函數。

適用于多進一出業務場景。即其輸入與輸出是多對一的關系,將多條輸入記錄聚合成一個輸出值。

除上述自定義函數外,MaxCompute還提供如下針對特殊場景的能力支撐。

自定義函數類型

應用場景

UDF(嵌入式)

當您需要簡化MaxCompute UDF操作步驟,并希望能直接查看代碼實現邏輯時,您可以直接將Java或Python代碼嵌入SQL腳本。

SQL自定義函數

當您的代碼中存在很多相似部分時,可以通過SQL自定義函數實現,提高代碼復用率的同時還可以簡化操作流程。

UDF(地理空間)

支持在MaxCompute中使用Hive地理空間函數分析空間數據。

使用限制

  • 訪問外網

    MaxCompute默認不支持通過自定義函數訪問外網。如果您需要通過自定義函數訪問外網,請根據業務情況填寫并提交網絡連接申請表單,MaxCompute技術支持團隊會及時聯系您完成網絡開通操作。表單填寫指導,請參見網絡開通流程

  • 訪問VPC網絡

    MaxCompute默認不支持通過UDF訪問VPC網絡。如果您的UDF涉及訪問VPC網絡中的資源時,需要先創建MaxCompute與目標VPC網絡間的網絡連接,才可以直接通過UDF訪問VPC網絡中的資源,操作詳情請參見通過UDF訪問VPC網絡資源

  • 讀取表數據

    目前版本不支持使用UDF/UDAF/UDTF讀取以下場景的表數據:

    • 做過表結構修改(Schema Evolution)的表數據。

    • 包含復雜數據類型的表數據。

    • 包含JSON數據類型的表數據。

    • Transactional表的表數據。

注意事項

使用自定義函數時,您需要注意:

  • 在性能上,自定義函數的性能低于內建函數,建議您優先使用內建函數實現相同邏輯的業務需求。

  • 在SQL語句中使用自定義函數時,如果計算的數據量過大并且存在傾斜,會導致作業占用的內存超出默認分配的內存。此時,您可以在Session級別設置set odps.sql.udf.joiner.jvm.memory=xxxx;屬性來解決此問題。更多自定義函數常見問題,請參見MaxCompute UDF常見問題

  • 當自定義函數的名稱與內建函數的名稱相同時,自定義函數會覆蓋同名的內建函數。例如,MaxCompute中存在一個名稱為CONCAT的自定義函數,則系統默認會調用自定義的CONCAT,不會調用內建函數CONCAT。如果您希望調用內建函數,需要在內建函數前增加::符號,例如select ::concat('ab', 'c');

開發UDF:支持的工具與通用流程

自定義標量函數(UDF\UDTF\UDAF)的開發流程如下。

說明

UDF(嵌入式)SQL自定義函數UDF(地理空間)的開發流程與此不同,請以對應文檔描述為準。

使用Java開發

當您使用Java代碼編寫MaxCompute UDF時,開發流程如下。

Java開發流程

步驟

步驟描述

支持的工具平臺

注意事項/相關文檔

可選

當您使用Maven編寫代碼時,需要先在Pom文件中添加代碼相關SDK依賴,確保后續編寫的代碼可編譯成功。例如開發自定義函數需要添加的SDK依賴為:

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-udf</artifactId>
   <version>0.29.10-public</version>
</dependency>

您可以從Maven庫中搜索odps-sdk-udf,獲取SDK依賴版本信息。

  • IntelliJ IDEA(Maven)

必選

根據業務需求,編寫自定義函數代碼。

使用Java開發UDF時需滿足Java UDF的開發規范,詳情請參見UDF開發規范與通用流程(Java)

必選

通過本地運行或單元測試方式調試自定義函數,查看運行結果是否符合預期。

必選

調試自定義函數代碼,確保本地運行成功后打包為JAR包。

必選

將JAR包作為資源上傳至MaxCompute項目。

必選

基于上傳的JAR包資源創建自定義函數。

可選

在查詢數據代碼中調用自定義函數。

使用Python開發

當您使用Python代碼編寫MaxCompute UDF時,開發流程如下。Python開發流程

步驟

步驟描述功能介紹

支持的工具平臺

注意事項/相關文檔

必選

根據業務需求,編寫自定義函數代碼。

MaxCompute Studio

使用Python開發UDF時需滿足Python UDF的開發規范,詳情請參見UDF開發規范與通用流程(Python3)UDF開發規范與通用流程(Python2)

必選

通過本地運行或單元測試方式調試自定義函數,查看運行結果是否符合預期。

必選

將Python文件或依賴的資源(例如文件資源、表資源、第三方包)上傳至MaxCompute項目。

必選

基于上傳的Python文件或依賴的資源創建自定義函數。

可選

在查詢數據代碼中調用自定義函數。

開發參考:MaxCompute SDK

MaxCompute為您提供了SDK,信息如下。您在開發UDF過程中如果需要使用MaxCompute SDK包,可在MaxCompute SDK中查看各SDK中包含的Package,以及Package中的Class詳細信息。

SDK名稱

描述

odps-sdk-core

提供操作MaxCompute基本資源的類。

odps-sdk-commons

Java Util封裝。

odps-sdk-udf

UDF功能的主體接口。

odps-sdk-mapred

MapReduce API。

odps-sdk-graph

Graph API。

調用UDF

開發完成UDF并將UDF注冊至MaxCompute后,在后續開發作業過程中您即可使用此UDF函數。自定義函數的使用方法如下:

  • 在歸屬MaxCompute項目中使用自定義函數:使用方法與內建函數類似,您可以參照內建函數的使用方法使用自定義函數。

  • 跨項目使用自定義函數:即在項目A中使用項目B的自定義函數,跨項目分享語句示例:select B:udf_in_other_project(arg0, arg1) as res from table_t;。更多跨項目分享信息,請參見基于Package跨項目訪問資源

UDF開發示例