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
-
Conceda permissões do RAM à função AliyunECSInstanceForEMRRole. (Esta etapa não é necessária após a integração do recurso ao EMR.)
Faça login no console do RAM usando sua conta Alibaba Cloud ou como administrador do RAM.
Escolha e pesquise a função AliyunECSInstanceForEMRRole.
Na coluna Actions, clique em Add Permissions.
Na seção Permission policy, pesquise e selecione AliyunDLFFullAccess. Em seguida, clique em OK.
-
Conceda permissões do DLF à função AliyunECSInstanceForEMRRole.
Faça login no console do Data Lake Formation.
Na página de lista Catalog, clique no nome do catálogo para abrir a página de detalhes.
Clique na aba Permissions e clique em Grant.
-
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.
NotaSe 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.0ou uma versão mais recente.
-
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.
-
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-currentImportanteSubstitua 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.
-
Execute o script no cluster EMR usando uma ação de script. Para mais informações, consulte Run a script manually.
No console do cluster EMR, acesse a aba e clique em Create and Run.
-
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.
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
No console do cluster EMR, acesse .
-
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
NotaSubstitua 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;