VVP Flink SQL对接DLF Paimon Catalog

本文为您介绍如何在阿里云实时计算Flink版(以下简称VVP)上实现Flink SQLDLF Paimon Catalog的对接。

前提条件

已创建Flink全托管工作空间。如未创建,详情请参见开通实时计算Flink

使用限制

仅实时计算引擎VVR 11.1.0及以上版本支持对接DLF Paimon Catalog。

创建DLF Paimon Catalog

详情请参见DLF 快速入门

VVP上添加Paimon Catalog

说明

这里仅用于建立与DLF Catalog的映射连接,创建或删除Catalog仅影响映射关系,不会对DLF中的实际数据产生影响。

  1. 登录实时计算控制台

  2. 单击Flink全托管工作空间列表中的工作空间名称,进入对应的工作空间。

  3. 可以通过UI或者SQL方式来添加Paimon Catalog。

    UI方式

    1. 在左侧导航栏,单击数据管理

    2. Catalog列表页,单击创建Catalog

    3. 选择Apache Paimon,单击下一步

    4. metastore 选择 dlfcatalog name 选择需要关联的V2.5版本的DLF Catalog,单击确认,即可创建Paimon Catalog。

    SQL命令

    数据查询文本编辑区域,输入以下SQL并执行,即可创建Paimon 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 ServerURI,格式为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权限(VVP产品化集成后可以省略该步骤)。

    1. 使用阿里云账号或RAM管理员登录RAM控制台

    2. 单击身份管理 > 角色,查询AliyunStreamAsiDefaultRole角色。

    3. 单击操作列的新增授权,进入新增授权页面。

    4. 权限策略中,查询并勾选AliyunDLFFullAccess,单击确认新增授权

    image