O MaxCompute permite criar tabelas externas do Paimon para acessar diretórios de tabelas do Paimon no OSS. Este tópico descreve como criar e acessar essas tabelas com o MaxCompute.
Contexto
O Apache Paimon é um formato unificado de armazenamento de data lake para streaming e batch que oferece gravações de alto throughput e consultas de baixa latência. O Paimon integra-se bem a mecanismos de computação comuns, como Spark, Hive e Trino, utilizados em serviços como Realtime Compute for Apache Flink e E-MapReduce. Com o Paimon, você pode construir um data lake no OSS e conectá-lo ao MaxCompute para análises. Para mais informações, consulte a documentação oficial do Apache Paimon.
Pré-requisitos
Você tem as permissões necessárias para criar tabelas no MaxCompute (CreateTable). Para mais informações, consulte Permissões do MaxCompute.
Você criou um projeto do MaxCompute. Para obter instruções, consulte Criar um projeto.
-
Você criou um bucket do OSS e um diretório dentro dele. Para obter instruções, consulte Criar um bucket.
NotaPara evitar problemas de conectividade, crie o bucket na mesma região do seu projeto do MaxCompute.
Você ativou o Realtime Compute for Apache Flink. Para obter instruções, consulte Ativar o Realtime Compute for Apache Flink.
Limitações
O MaxCompute oferece suporte apenas à leitura de tabelas externas do Paimon. Não há suporte para gravação nessas tabelas nem para detecção automática de alterações de schema na tabela source.
O Paimon não é compatível com projetos do MaxCompute que têm o recurso de schema ativado.
As tabelas externas do Paimon não oferecem suporte ao atributo de clustering.
As tabelas externas do Paimon não oferecem suporte a recursos como consulta de versões históricas de dados.
Sintaxe da tabela externa do Paimon
Use a sintaxe a seguir para criar uma tabela externa do Paimon no MaxCompute:
CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>'
USING 'paimon_maxcompute_connector.jar';
Se você criar uma tabela particionada, deverá executar um comando adicional para carregar os dados da partição. Para mais informações, consulte Tabelas externas ORC.
-
Método 1 (Recomendado): Analise automaticamente a estrutura de diretórios do OSS para identificar e adicionar partições à tabela externa.
MSCK REPAIR TABLE <mc_oss_extable_name> ADD PARTITIONS; -
Método 2: Execute manualmente o comando a seguir para adicionar uma partição.
ALTER TABLE <mc_oss_extable_name> ADD PARTITION (<col_name>= <col_value>);
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
mc_oss_extable_name |
Sim |
Nome da tabela externa do Paimon a ser criada. Os nomes das tabelas não diferenciam maiúsculas de minúsculas. Não é necessário considerar o caso ao consultar a tabela externa. |
|
col_name |
Sim |
Nome de uma coluna na tabela externa do Paimon. Ao ler dados do Paimon, o schema da tabela externa deve corresponder ao schema dos arquivos de dados do Paimon. Caso contrário, a operação de leitura falhará. |
|
data_type |
Sim |
Tipo de dados de uma coluna na tabela externa do Paimon. Durante a leitura de dados do Paimon, o tipo de dados de cada coluna na tabela externa deve corresponder ao tipo de dados da coluna equivalente nos arquivos de dados do Paimon. Se houver divergência, a operação de leitura falhará. |
|
odps.properties.rolearn |
Sim |
O Alibaba Cloud Resource Name (ARN) de uma função do RAM com permissões para acessar o OSS. É possível obter o ARN na página de detalhes da função no console do RAM. |
|
oss_location |
Sim |
Caminho para os arquivos de dados no OSS. O formato é
|
Procedimento
Etapa 1: Preparar dados no Flink
Crie um catálogo Paimon e uma tabela Paimon e, em seguida, insira dados na tabela. Se você já tem uma tabela Paimon com dados no Realtime Compute for Apache Flink, pule esta etapa.
Acesse o console do Realtime Compute for Apache Flink e crie um catálogo Paimon. Para obter detalhes, consulte Criar um catálogo Paimon.
-
Crie uma tabela Paimon. Para obter detalhes, consulte Gerenciar tabelas Paimon.
Na página Metadata Management, navegue até o catálogo Paimon criado, selecione o banco de dados default e clique em Create Table.
-
Na caixa de diálogo Add Table, selecione o conector Apache Paimon, insira a instrução a seguir e clique em OK. Este exemplo cria uma tabela chamada test_tbl.
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt); -
Na página SQL Editor, crie, implante e execute um job SQL contendo a seguinte instrução. Para mais informações sobre como criar e executar um job SQL, consulte Visão geral do desenvolvimento de jobs.
INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');NotaCertifique-se de que a versão do mecanismo para o job SQL seja vvr-8.0.1-flink-1.17 ou posterior.
Se o seu job SQL apresentar backpressure (por exemplo, ao executar instruções
INSERT INTO ... VALUES ...), acesse a página Job O&M, edite os Execution Parameters e, na seção Other Configurations, definaexecution.checkpointing.checkpoints-after-tasks-finish.enabled: true. Para obter detalhes sobre como configurar parâmetros de tempo de execução de um job, consulte Configurar informações de implantação do job.
Etapa 2: Carregar o conector Paimon
Use um dos métodos a seguir para carregar o conector Paimon no seu projeto do MaxCompute.
Cliente do MaxCompute
Usar o cliente (odpscmd) para acessar o projeto do MaxCompute e execute o código a seguir para carregar o arquivo paimon_maxcompute_connector.jar no projeto.
ADD JAR <path_to_paimon_maxcompute_connector.jar>;
DataWorks
Faça login no console do DataWorks. No painel de navegação à esquerda, clique em Workspaces. Localize o workspace desejado e clique em Go to DataStudio na coluna Actions.
Na página Data Development, clique no ícone Create e selecione Resource > JAR.
-
Na caixa de diálogo Create Resource, configure os parâmetros do novo recurso, carregue o arquivo
paimon_maxcompute_connector.jare clique em Create. Para mais informações, consulte Etapa 1: Criar ou carregar um recurso.Defina Resource Type como JAR e selecione Upload as ODPS resource.
Após a criação do recurso, clique no ícone
na barra de ferramentas para enviar o recurso ao servidor.
Etapa 3: Criar uma tabela externa do Paimon
Conecte-se usando o cliente local (odpscmd) ou use outra ferramenta capaz de executar SQL do MaxCompute para criar uma tabela externa do Paimon no MaxCompute. Este tópico usa oss_extable_paimon_1pt como exemplo.
CREATE EXTERNAL TABLE oss_extable_paimon_1pt
(
id BIGINT,
data STRING
)
PARTITIONED BY (dt STRING)
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH SERDEPROPERTIES (
'odps.properties.rolearn'='acs:ram::124*********:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/paimon_flink/test_db_y.db/test_tbl/'
USING 'paimon_maxcompute_connector.jar'
;
Etapa 4: Ler a tabela externa do Paimon
-
Conecte-se usando o cliente do MaxCompute (odpscmd) ou outra ferramenta que execute SQL do MaxCompute e, em seguida, execute os comandos a seguir:
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true; -
Execute o comando a seguir para consultar a tabela externa do Paimon no MaxCompute
oss_extable_paimon_1pt.SELECT * FROM oss_extable_paimon_1pt;O exemplo de resultado a seguir é retornado:
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+NotaSe as partições não aparecerem no resultado, execute o comando a seguir para adicioná-las:
MSCK REPAIR TABLE oss_extable_paimon_1pt ADD PARTITIONS;
Documentação relacionada
Você também pode criar uma tabela externa do Paimon no MaxCompute como um catálogo personalizado no Realtime Compute for Apache Flink. Isso permite consultar e consumir os dados do Paimon com o MaxCompute após a gravação. Para mais informações, consulte Criar uma tabela externa do Paimon usando o Realtime Compute for Apache Flink.