O Apache Paimon é um formato unificado de data lake para processamento em streaming e em lote, compatível com gravações de alto throughput e consultas de baixa latência. Este tópico descreve como ler e gravar tabelas Paimon no EMR Serverless Spark.
Pré-requisitos
Crie um workspace. Criar um workspace.
Procedimento
Etapa 1: Criar uma sessão SQL
-
Acesse a página Sessions.
Faça login no console EMR.
No painel de navegação à esquerda, escolha EMR Serverless > Spark.
Na página Spark, clique em nome do workspace desejado.
Na página EMR Serverless Spark, clique em Sessions no painel de navegação à esquerda.
Na página SQL Session, clique em Connect to SQL Session.
-
Na página Create SQL Session, configure os parâmetros na seção Spark Configuration e clique em Create. Gerenciar sessões SQL.
O Spark lê e grava tabelas Paimon por meio de catálogos. Selecione o tipo de catálogo conforme o seu cenário. Gerenciar catálogos de dados.
Catálogo de dados
Ao utilizar um catálogo de dados, não são necessários parâmetros de sessão. Clique em Catalog na página Add Catalog e selecione o catálogo de dados no ambiente de desenvolvimento Spark SQL.
NotaRecomendamos as versões do mecanismo EMR esr-4.3.0 ou posterior, esr-3.3.0 ou posterior, ou esr-2.7.0 ou posterior.
Catálogo personalizado
Data Lake Formation (DLF)
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore rest spark.sql.catalog.<catalogName>.uri http://cn-hangzhou-vpc.dlf.aliyuncs.com spark.sql.catalog.<catalogName>.warehouse <catalog_name> spark.sql.catalog.<catalogName>.token.provider dlf spark.sql.catalog.<catalogName>.dlf.access-key-id <access_key_id> spark.sql.catalog.<catalogName>.dlf.access-key-secret <access_key_secret>Parâmetros:
Parâmetro
Descrição
Valor de exemplo
spark.sql.catalog.<catalogName>Implementação do catálogo.
Valor fixo:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreMétodo de armazenamento de metadados. Defina como
restpara usar a API REST do DLF.Valor fixo:
restspark.sql.catalog.<catalogName>.uriURI do DLF. Formato:
http://<endpoint>-vpc.dlf.aliyuncs.com.http://cn-hangzhou-vpc.dlf.aliyuncs.comspark.sql.catalog.<catalogName>.warehouseCaminho do warehouse. Para o DLF, defina este valor como o nome do catálogo.
<catalog_name>spark.sql.catalog.<catalogName>.token.providerProvedor de autenticação. Defina como
dlfpara o DLF.Valor fixo:
dlfspark.sql.catalog.<catalogName>.dlf.access-key-idAccessKey ID da sua conta Alibaba Cloud ou usuário RAM.
<access_key_id>spark.sql.catalog.<catalogName>.dlf.access-key-secretAccessKey secret da sua conta Alibaba Cloud ou usuário RAM.
<access_key_secret>DLF-Legacy
Os metadados são armazenados no DLF 1.0.
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore dlf spark.sql.catalog.<catalogName>.dlf.catalog.id <catalog_name> spark.sql.catalog.<catalogName>.dlf.catalog.endpoint dlf-vpc.cn-hangzhou.aliyuncs.comParâmetros:
Parâmetro
Descrição
Valor de exemplo
spark.sql.catalog.<catalogName>Implementação do catálogo.
Valor fixo:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreMétodo de armazenamento de metadados. Defina como
dlfpara usar o DLF como metastore.Valor fixo:
dlfspark.sql.catalog.<catalogName>.dlf.catalog.idNome do catálogo no DLF.
<catalog_name>spark.sql.catalog.<catalogName>.dlf.catalog.endpointEndpoint do DLF. Selecione um endpoint do DLF com base na sua região.
dlf-vpc.cn-hangzhou.aliyuncs.comHive Metastore
Os metadados são armazenados em um Hive Metastore especificado.
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore hive spark.sql.catalog.<catalogName>.uri thrift://<yourHMSUri>:<port>Parâmetros:
Parâmetro
Descrição
Valor de exemplo
spark.sql.catalog.<catalogName>Implementação do catálogo.
Valor fixo:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreTipo de metastore. Defina como
hivepara usar um Hive Metastore.Valor fixo:
hivespark.sql.catalog.<catalogName>.uriURI do Hive Metastore. Formato:
thrift://<IP address of Hive metastore>:9083.<IP address of Hive metastore>é o endereço IP interno do serviço Hive Metastore. Para usar um metastore externo, consulte Conectar a um serviço externo de Hive Metastore.thrift://192.168.**.**:9083Sistema de arquivos
Os metadados são armazenados em um sistema de arquivos.
spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore filesystem spark.sql.catalog.<catalogName>.warehouse oss://<yourBucketName>/warehouseParâmetros:
Parâmetro
Descrição
Valor de exemplo
spark.sql.catalog.<catalogName>Implementação do catálogo.
Valor fixo:
org.apache.paimon.spark.SparkCatalogspark.sql.catalog.<catalogName>.metastoreTipo de metastore. Defina como
filesystempara usar um sistema de arquivos como metastore.Valor fixo:
filesystemspark.sql.catalog.<catalogName>.warehouseCaminho do warehouse. Neste exemplo,
<yourBucketName>é o nome de um bucket do OSS.oss://my-bucket/warehouseÉ possível configurar vários catálogos simultaneamente, como DLF, DLF 1.0 e Hive. Exemplo:
# Configure a DLF catalog spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore rest spark.sql.catalog.<catalogName>.uri http://cn-hangzhou-vpc.dlf.aliyuncs.com spark.sql.catalog.<catalogName>.warehouse <catalog_name> spark.sql.catalog.<catalogName>.token.provider dlf spark.sql.catalog.<catalogName>.dlf.access-key-id <access_key_id> spark.sql.catalog.<catalogName>.dlf.access-key-secret <access_key_secret> # Configure a DLF 1.0 catalog spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore dlf spark.sql.catalog.<catalogName>.dlf.catalog.id <catalog_name> spark.sql.catalog.<catalogName>.dlf.catalog.endpoint dlf-vpc.cn-hangzhou.aliyuncs.com # Configure a hive1 catalog spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore hive spark.sql.catalog.<catalogName>.uri thrift://<yourHMSUri-1>:<port> # Configure a hive2 catalog spark.sql.catalog.<catalogName> org.apache.paimon.spark.SparkCatalog spark.sql.catalog.<catalogName>.metastore hive spark.sql.catalog.<catalogName>.uri thrift://<yourHMSUri-2>:<port>
Etapa 2: Ler e gravar tabelas Paimon
-
Acesse a página de desenvolvimento SQL.
Na página EMR Serverless Spark, clique em Development no painel de navegação à esquerda.
Na aba Development, clique em ícone
.Na caixa de diálogo Create, insira um nome como users_task, mantenha o Type como SparkSQL (padrão) e clique em OK.
-
Copie o código abaixo para a nova aba Spark SQL (users_task).
Catálogo Paimon
-- Create a database. CREATE DATABASE IF NOT EXISTS paimon.ss_paimon_db; -- Create a Paimon table. CREATE TABLE paimon.ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon; -- Write data to the Paimon table. INSERT INTO paimon.ss_paimon_db.paimon_tbl VALUES (1, "a"), (2, "b"), (3, "c"); -- Query the write results from the Paimon table. SELECT * FROM paimon.ss_paimon_db.paimon_tbl ORDER BY id; -- Delete the database. DROP DATABASE paimon.ss_paimon_db CASCADE; Selecione um banco de dados na lista suspensa de bancos de dados e a sessão SQL criada na lista suspensa de sessões.
-
Clique em Run para executar o job. O job retorna a seguinte saída:

Perguntas frequentes
Documentação relacionada
Para detalhes sobre uso e configuração do Paimon, consulte a documentação oficial do Paimon.
Para usar um serviço de metastore externo, consulte Conectar a um serviço externo de Hive Metastore.