Todos os produtos
Search
Central de documentação

Data Lake Formation:Access DLF data from EMR on ECS by using the file system interface

Última atualização: Aug 24, 2026

Este tópico descreve como acessar o sistema de arquivos virtual Paimon (PVFS) em um ambiente EMR on ECS.

Pré-requisitos

  • Crie um cluster EMR (v5.12.0 ou posterior) com os componentes Spark3 e Paimon selecionados. Caso precise de uma versão diferente, entre em contato com a equipe de desenvolvimento do Data Lake Formation (DLF) ingressando no grupo do DingTalk (106575000021).

  • Um DLF Catalog criado.

  • O cluster EMR e o DLF estão na mesma região, e a VPC do cluster EMR está adicionada à lista de permissões do DLF.

Conceda permissões do DLF a uma função

  1. Conceda permissões do RAM à função AliyunECSInstanceForEMRRole. (Esta etapa não é necessária após a integração do recurso ao EMR.)

    1. Faça login no console do RAM usando sua conta Alibaba Cloud ou como administrador do RAM.

    2. Escolha Identities > Roles e pesquise a função AliyunECSInstanceForEMRRole.

    3. Na coluna Actions, clique em Add Permissions.

    4. Na seção Permission policy, pesquise e selecione AliyunDLFFullAccess. Em seguida, clique em OK.

  2. Conceda permissões do DLF à função AliyunECSInstanceForEMRRole.

    1. Faça login no console do Data Lake Formation.

    2. Na página de lista Catalog, clique no nome do catálogo para abrir a página de detalhes.

    3. Clique na aba Permissions e clique em Grant.

    4. Configure os parâmetros a seguir e clique em OK.

      • User/Role: Selecione RAM User/RAM Role.

      • Select Authorization Object: Na lista suspensa, selecione AliyunECSInstanceForEMRRole.

        Nota

        Se você não encontrar AliyunECSInstanceForEMRRole na lista suspensa, acesse a página de gerenciamento de usuários e clique em Sync.

      • Preset Permission Type: Selecione Data Editor.

Atualize as dependências do Paimon no cluster

  • Atualize as seguintes dependências para a versão 1,3 ou posterior:

  • Selecione a dependência paimon-spark correspondente à sua versão do Spark e atualize-a para a versão 1,3 ou posterior.

    No repositório Maven, escolha a dependência apropriada. Por exemplo, se usar o Spark 3.2, selecione paimon-spark-3.2-1.3.0 ou uma versão mais recente.

  1. Envie as dependências.

    Envie os quatro pacotes de dependência para o OSS e defina as permissões de arquivo como Public Read. Para mais informações, consulte Simple upload.

  2. Escreva um script e envie-o para o OSS.

    #!/bin/bash
    echo 'prepare paimon-vfs in hadoop classpath'
    cd /opt/apps/JINDOSDK/jindosdk-current/lib
    rm -rf paimon-*
    wget ${paimon_vfs_jar}
    wget ${paimon_jindo_jar}
    wget ${paimon_bundle_jar}
    echo 'prepare paimon-spark in spark classpath'
    rm -rf /opt/apps/PAIMON/paimon-dlf
    rm -rf /opt/apps/PAIMON/paimon-dlf.tar.gz.*
    mkdir -p /opt/apps/PAIMON/paimon-dlf/lib/spark3
    cd /opt/apps/PAIMON/paimon-dlf/lib/spark3
    wget ${paimon_spark_jar}
    rm -f /opt/apps/PAIMON/paimon-current
    ln -sf /opt/apps/PAIMON/paimon-dlf /opt/apps/PAIMON/paimon-current
    Importante

    Substitua os espaços reservados no script, como ${paimon_vfs_jar}, ${paimon_jindo_jar}, ${paimon_bundle_jar} e ${paimon_spark_jar}, pelos respectivos caminhos de download do OSS. Por padrão, clusters EMR on ECS não têm acesso à rede pública. Exemplos:

    • Rede interna: https://{bucket}.oss-cn-hangzhou-internal.aliyuncs.com/jars/paimon-jindo-1.3.0.jar.

    • Rede pública: https://{bucket}.oss-cn-hangzhou.aliyuncs.com/jars/paimon-jindo-1.3.0.jar.

  3. Execute o script no cluster EMR usando uma ação de script. Para mais informações, consulte Run a script manually.

    1. No console do cluster EMR, acesse a aba Script actions > Run Manually e clique em Create and Run.

    2. Configure os parâmetros abaixo e clique em OK.

      • Name: Insira um nome personalizado para o script.

      • Script Location: Selecione o script de atualização enviado para o OSS. O caminho do script deve estar no formato oss://**/*.sh.

      • Execution scope: Selecione Cluster.

  4. Após a execução do script, reinicie os serviços Spark e Hive para aplicar as alterações.

Atualize a configuração do cluster EMR

  1. No console do cluster EMR, acesse Cluster services > Hadoop-Common > Configure.

  2. Na seção core-site.xml, clique em Add configuration item.

    Parâmetro

    Valor

    fs.AbstractFileSystem.pvfs.impl

    org.apache.paimon.vfs.hadoop.Pvfs

    fs.pvfs.impl

    org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem

    fs.pvfs.uri

    cn-hangzhou-vpc.dlf.aliyuncs.com

    Nota

    Substitua o valor pelo endpoint da sua região. Para mais informações, consulte Endpoints.

    fs.pvfs.token.provider

    dlf

    fs.pvfs.dlf.token-loader

    ecs

Acesse arquivos no DLF

Após criar uma Object Table, acesse os dados usando o esquema pvfs://.

Acesse dados usando o shell do Hadoop

Envie um arquivo CSV para a Object Table usando o shell do Hadoop.

# Upload the CSV file
echo "James,Sales,3000" >> employee.csv
hadoop fs -put employee.csv pvfs://catalog_name/default/object_table/
# List all files in the Object Table
hadoop fs -ls pvfs://catalog_name/default/object_table/
# View the CSV file
hadoop fs -cat pvfs://catalog_name/default/object_table/employee.csv

Acesse dados usando o Hive

Consulte o arquivo CSV na Object Table por meio do Hive.

# Connect to Hive
beeline -u jdbc:hive2://localhost:10000
# Create a temporary table to map the CSV file
CREATE TEMPORARY TABLE temp_table (
    employee_name STRING,
    department STRING,
    salary INT
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE 
LOCATION 'pvfs://catalog_name/default/object_table/';
# Query the temporary table
SELECT * FROM temp_table;

Acesse dados usando o Spark

Consulte o arquivo CSV na Object Table usando o Spark.

# Start spark-sql
spark-sql
# Create a temporary view to map the CSV file
CREATE TEMPORARY VIEW temp_table
USING csv
OPTIONS (
path 'pvfs://catalog_name/default/object_table',
inferSchema 'false',
schema 'employee_name STRING, department STRING, salary INT'
);
# Query the temporary view
SELECT * FROM temp_table;