Este tópico descreve como conectar-se a um catálogo do Data Lake Formation (DLF) no workspace do Realtime Compute for Apache Flink por meio do Flink SQL e do Paimon REST.
Pré-requisitos
Você deve ter um workspace totalmente gerenciado do Realtime Compute for Apache Flink. Se ainda não criou um, consulte Ativar o Realtime Compute for Apache Flink.
Verifique se o workspace do Realtime Compute for Apache Flink e o DLF estão na mesma região. Adicione também a VPC do workspace à lista de permissões do DLF. Para mais informações, consulte Configurar uma lista de permissões de VPC.
Limitações
Somente o Ververica Runtime (VVR) 11.1.0 ou posterior oferece suporte à conexão com um catálogo DLF.
Crie um catálogo DLF
Para mais informações, consulte Introdução ao DLF.
Registrar o catálogo no Flink
Esta operação mapeia seu catálogo DLF apenas como metadados. A criação ou exclusão deste catálogo no Realtime Compute for Apache Flink não afeta os dados subjacentes no DLF.
Faça login no console do Realtime Compute.
Na lista de workspaces totalmente gerenciados, clique em nome do workspace desejado para abrir o console correspondente.
-
Registre o catálogo pela interface ou execute comandos SQL.
Interface
No painel de navegação à esquerda, clique em Catalogs.
Na página Catalog List, clique em Create Catalog.
Selecione Apache Paimon e clique em Next.
Defina metastore como dlf. Em catalog name, selecione o catálogo DLF desejado. Clique em OK para criar o catálogo.
Comandos SQL
No editor de Scripts, insira e execute a seguinte instrução SQL para criar o catálogo.
CREATE CATALOG `flink_catalog_name` WITH ( 'type' = 'paimon', 'metastore' = 'rest', 'token.provider' = 'dlf', 'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com', 'warehouse' = 'dlf_test' );A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
Obrigatório
Exemplo
type
Tipo do catálogo. Valor fixo:
paimon.Sim
paimon
metastore
Tipo do metastore. Valor fixo:
rest.Sim
rest
token.provider
Provedor de token. Valor fixo:
dlf.Sim
dlf
uri
URI de acesso ao DLF REST Catalog Server. Formato:
http://[region-id]-vpc.dlf.aliyuncs.com. Para mais informações sobre IDs de região, consulte Endpoints.Sim
http://cn-hangzhou-vpc.dlf.aliyuncs.com
warehouse
Nome do catálogo DLF subjacente usado como warehouse.
Sim
dlf_test
Erros comuns
java.lang.NullPointerException
-
Exemplo de stack trace:
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 -
Solução:
Verifique o valor do parâmetro uri na configuração do catálogo. O valor deve começar com
http://.
ForbiddenException: You are not authorized to do this operation
-
Exemplo de stack trace:
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 -
Solução:
Conceda a política AliyunDLFFullAccess à função AliyunStreamAsiDefaultRole. Esta etapa pode tornar-se desnecessária em futuras atualizações do product.
Faça login no console do RAM com sua conta Alibaba Cloud ou como administrador do RAM.
No painel de navegação à esquerda, acesse e localize a função AliyunStreamAsiDefaultRole.
Na coluna Actions, clique em Grant Permission.
Na seção Policy, pesquise e selecione a política AliyunDLFFullAccess. Clique em Grant Permissions.