A API de metadados é uma interface padrão e open-source fornecida pelo Paimon para acessar os metadados do Data Lake Formation (DLF). A dependência do SDK da API de metadados contém apenas classes relacionadas ao Paimon, o que evita conflitos com as dependências da sua aplicação.
Escolha um endpoint de acesso
A API de metadados do DLF está disponível em dois endpoints. Escolha o endpoint adequado com base no local de execução do seu cliente:
Endpoint VPC do DLF (Recomendado) — Oferece acesso de baixa latência a partir de uma VPC incluída na lista de permissões do DLF. Os exemplos neste tópico utilizam um endpoint VPC do DLF.
Endpoint OpenAPI do Alibaba Cloud — Permite acesso via rede pública, atendendo a cenários como acesso entre regiões e depuração local. O suporte a assinatura para o endpoint OpenAPI exige um cliente Paimon versão 1,4 ou superior, mais recente que a versão do SDK usada na dependência Maven deste tópico.
Pré-requisitos
Antes de adicionar uma VPC à lista de permissões, conceder permissões a uma função, incluir a dependência Maven e chamar a API de metadados do DLF, certifique-se de atender aos seguintes requisitos:
Acesso à rede — Por padrão, a API de metadados do DLF só pode ser acessada a partir de VPCs presentes na lista de permissões. Ao acessar o DLF por meio de um endpoint VPC do DLF, seu cliente deve ser executado em uma VPC autorizada.
Ambiente de execução e função — Para utilizar a autenticação por função do Elastic Compute Service (ECS), seu cliente deve ser executado em uma instância ECS ou em um nó de cluster E-MapReduce (EMR) vinculado a uma função ECS.
Catálogo DLF — Um catálogo DLF deve estar disponível, e a função ECS deve possuir permissões sobre esse catálogo.
Credenciais de autorização — Você precisa de uma conta Alibaba Cloud ou credenciais de administrador do Resource Access Management (RAM) para conceder permissões RAM à função ECS.
Versão do cliente — O cliente Paimon deve atender ao requisito de versão do endpoint escolhido, conforme descrito na seção anterior.
Configure a lista de permissões de VPC
Ao ativar o DLF, o sistema sincroniza automaticamente os IDs das VPCs da sua região atual para a lista de permissões no nível do usuário. Para adicionar uma VPC posteriormente, insira seu ID no console DLF:
Faça login no console do Data Lake Formation (DLF).
No painel de navegação à esquerda, clique em System & Security.
Clique na aba System & Security e, em seguida, clique em Add VPC.
Na caixa de diálogo exibida, insira o ID da VPC a partir da qual você acessará a API de metadados do DLF e clique em OK.
Conceda permissões do DLF a uma função
Conceda à função ECS dois conjuntos de permissões: permissões RAM no console RAM e permissões de catálogo no console DLF. Por exemplo, para um cluster EMR, a função é AliyunECSInstanceForEMRRole.
-
Conceda permissões RAM à função ECS.
Faça login no console do Resource Access Management (RAM) com sua conta Alibaba Cloud ou como administrador RAM.
Escolha Identities > Roles e pesquise pela função ECS.
Na coluna Actions, clique em Add Permissions.
Em Policies, pesquise e selecione
AliyunDLFFullAccesse clique em OK.
-
Conceda permissões do DLF à função ECS.
Faça login no console do Data Lake Formation (DLF).
Na página Catalogs, clique no nome do catálogo desejado.
Clique na aba Permissions e, em seguida, clique em Grant Permissions.
-
Na página de autorização, configure os parâmetros abaixo e clique em OK.
Principal: Selecione um usuário RAM ou uma função RAM.
-
Select DLF User: Selecione ECS Role na lista suspensa.
NotaSe ECS Role não aparecer na lista suspensa de usuários, escolha System & Security > Access Control > Users e clique em Sync Users.
Predefined Permission Type: Selecione Data Editor.
Crie um cliente de API REST
Crie um cliente de API REST para chamar a API de metadados do DLF a partir da sua aplicação Java.
Adicione a dependência Maven
Para referenciar o SDK da API no seu projeto Java, adicione a seguinte dependência Maven:
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-api</artifactId>
<version>1.3.0</version>
</dependency>
Alternativamente, baixe o arquivo JAR diretamente: paimon-api-1.3.0.jar.
Inicialize o cliente e chame a API
Escolha um método de autenticação para o service REST do DLF com base no seu ambiente de execução:
Função ECS (Recomendado) — Emite um token temporário por meio da instância ECS onde o cliente é executado. O exemplo a seguir utiliza este método.
Par de AccessKey — Conecta-se diretamente ao service REST do DLF configurando
DLF_ACCESS_KEY_IDeDLF_ACCESS_KEY_SECRETemRESTCatalogOptions. Utilize esta opção quando não houver uma função ECS disponível no seu ambiente de execução.
O exemplo abaixo cria um cliente RESTApi autenticado com uma função ECS e lista as tabelas de um banco de dados. Substitua o endpoint, o nome do catálogo dlf_test e o nome do banco de dados my_database pelos valores correspondentes ao endpoint da sua região, catálogo DLF e banco de dados.
import org.apache.paimon.options.Options;
import org.apache.paimon.rest.RESTApi;
import static org.apache.paimon.options.CatalogOptions.WAREHOUSE;
import static org.apache.paimon.rest.RESTCatalogOptions.DLF_TOKEN_LOADER;
import static org.apache.paimon.rest.RESTCatalogOptions.TOKEN_PROVIDER;
import static org.apache.paimon.rest.RESTCatalogOptions.URI;
public class RESTApiExample {
public static void main(String[] args) {
Options options = new Options();
options.set(URI, "http://cn-hangzhou-vpc.dlf.aliyuncs.com");
options.set(WAREHOUSE, "dlf_test");
options.set(TOKEN_PROVIDER, "dlf");
options.set(DLF_TOKEN_LOADER, "ecs");
RESTApi api = new RESTApi(options);
System.out.println(api.listTables("my_database"));
}
}
Este exemplo imprime o resultado retornado pela chamada listTables para o banco de dados especificado.
A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
Obrigatório |
Exemplo |
|
URI |
URI utilizada para acessar o DLF REST Catalog Server, no formato |
Sim |
|
|
WAREHOUSE |
Nome do catálogo DLF. |
Sim |
|
|
TOKEN_PROVIDER |
Provedor de token. Defina o valor como |
Sim |
|
|
DLF_TOKEN_LOADER |
Carregador de token. Defina o valor como |
Não |
|
|
DLF_ACCESS_KEY_ID |
AccessKey ID usado para conectar-se diretamente ao service REST do DLF, sem usar autenticação baseada em ECS. Configure este parâmetro em |
Não |
- |
|
DLF_ACCESS_KEY_SECRET |
AccessKey secret usado para conectar-se diretamente ao service REST do DLF, sem usar autenticação baseada em ECS. Configure este parâmetro em |
Não |
- |