如何在阿里雲Realtime ComputeFlink版上通過Flink SQL以Paimon REST訪問DLF Catalog。
前提條件
已建立Flink全託管工作空間。如未建立,詳情請參見開通Realtime ComputeFlink版。
請確保Flink工作空間與DLF位於同一地區下,且添加Flink所在VPC為白名單,請參見配置VPC白名單。
使用限制
僅Realtime Compute引擎VVR 11.1.0及以上版本支援對接DLF Catalog。
建立DLF Catalog
詳情請參見DLF 快速入門。
在Flink上添加Catalog
這裡僅用於建立與DLF Catalog的映射串連,建立或刪除Catalog僅影響映射關係,不會對DLF中的實際資料產生影響。
單擊Flink全託管工作空間列表中的工作空間名稱,進入對應的工作空間。
可以通過UI或者SQL方式來添加Catalog。
UI方式
在左側導覽列,單擊資料管理。
在Catalog列表頁,單擊建立Catalog。
選擇Apache Paimon,單擊下一步。
metastore 選擇 dlf,catalog name 選擇需要關聯版本的DLF Catalog,單擊確定,即可建立Catalog。
SQL命令
在資料查詢文本編輯地區,輸入以下SQL並執行,即可建立Catalog。
CREATE CATALOG `flink_catalog_name` WITH ( 'type' = 'paimon', 'metastore' = 'rest', 'token.provider' = 'dlf', 'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com', 'warehouse' = 'dlf_test' );參數說明如下:
參數
描述
是否必填
樣本
type
Catalog類型,固定為paimon。
是
paimon
metastore
metastore類型,固定為rest。
是
rest
token.provider
Token提供方,固定為dlf。
是
dlf
uri
訪問DLF Rest Catalog Server的URI,格式為
http://[region-id]-vpc.dlf.aliyuncs.com。詳見服務存取點中的Region ID。是
http://cn-hangzhou-vpc.dlf.aliyuncs.com
warehouse
DLF Catalog名稱。
是
dlf_test
常見報錯
Http NullPointerException
報錯棧樣本:
Caused by: java.lang.NullPointerException at org.apache.paimon.rest.HttpClient.getRequestUrl(HttpClient.java:180) at org.apache.paimon.rest.HttpClient.get(HttpClient.java:108) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:159) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:141) at org.apache.paimon.rest.RESTCatalogFactory.create(RESTCatalogFactory.java:36) at org.apache.paimon.catalog.CatalogFactory.createUnwrappedCatalog(CatalogFactory.java:84) at org.apache.paimon.catalog.CatalogFactory.createCatalog(CatalogFactory.java:71) at org.apache.paimon.flink.VvrCatalogFactory.createCatalog(VvrCatalogFactory.java:67) at org.apache.paimon.flink.VvrCatalogFactory.createCatalog(VvrCatalogFactory.java:37) at org.apache.flink.table.gateway.vvr.module.delegation.CatalogFactoryWrapper.createCatalog(CatalogFactoryWrapper.java:91) at org.apache.flink.table.factories.FactoryUtil.createCatalog(FactoryUtil.java:572) ... 23 more解決方案:
檢查catalog配置項中uri的值,應該以
http://開頭。
ForbiddenException: Forbidden: You are not authorized to do this operation
報錯棧樣本:
Caused by: org.apache.paimon.rest.exceptions.ForbiddenException: Forbidden: You are not authorized to do this operation. Action: dlf:GetConfig. AccessDeniedDetail : {"AuthAction":"dlf:GetConfig","AuthPrincipalType":"AssumedRoleUser","AuthPrincipalOwnerId":"xxxxx","AuthPrincipalDisplayName":"aliyunstreamasidefaultrole:xxxxx","PolicyType":"AccountLevelIdentityBasedPolicy","NoPermissionType":"ImplicitDeny"} requestId:xxxxx at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:59) at org.apache.paimon.rest.DefaultErrorHandler.accept(DefaultErrorHandler.java:35) at org.apache.paimon.rest.HttpClient.exec(HttpClient.java:205) at org.apache.paimon.rest.HttpClient.get(HttpClient.java:112) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:159) at org.apache.paimon.rest.RESTCatalog.<init>(RESTCatalog.java:141) at org.apache.paimon.rest.RESTCatalogFactory.create(RESTCatalogFactory.java:36解決方案:
授予AliyunStreamAsiDefaultRole角色AliyunDLFFullAccess許可權(Flink產品化整合後可以省略該步驟)。
使用阿里雲帳號或Resource Access Management員登入RAM控制台。
單擊,查詢AliyunStreamAsiDefaultRole角色。
單擊操作列的新增授權,進入新增授權頁面。
在權限原則中,查詢並勾選AliyunDLFFullAccess,單擊確認新增授權。
