As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Acesso não filtrado do Lake Formation para EMR Serverless
Com as versões 7.8.0 e superiores do Amazon EMR, você pode aproveitar o Lake AWS Formation com o Glue Data Catalog, onde a função de tempo de execução do trabalho tem permissões completas de tabela sem as limitações do controle de acesso refinado. Esse recurso permite que você leia e grave em tabelas protegidas pelo Lake Formation a partir de trabalhos em lote e interativos do EMR Serverless Spark. Consulte as seções a seguir para saber mais sobre o Lake Formation e como usá-lo com o EMR Sem Servidor.
Usando o Lake Formation com acesso total à mesa
Você pode acessar as tabelas do catálogo do Glue Data protegidas pelo AWS Lake Formation a partir de trabalhos do EMR Serverless Spark ou sessões interativas em que a função de tempo de execução do trabalho tem acesso total à tabela. Você não precisa ativar o AWS Lake Formation no aplicativo EMR Serverless. Quando um trabalho do Spark é configurado para Full Table Access (FTA), as credenciais do AWS Lake Formation são usadas para os dados do read/write S3 das tabelas registradas do AWS Lake Formation, enquanto as credenciais da função de tempo de execução do trabalho são usadas para read/write tabelas não registradas no Lake Formation. AWS
Importante
Não ative o AWS Lake Formation para um controle de acesso refinado. Um trabalho não pode executar simultaneamente o Full Table Access (FTA) e o Fine-Grained Access Control (FGAC) no mesmo cluster ou aplicativo do EMR.
Etapa 1: Habilitar o acesso total à tabela no Lake Formation
Para usar o modo Full Table Access (FTA), você precisa permitir que mecanismos de consulta de terceiros acessem dados sem a validação da tag de sessão do IAM no AWS Lake Formation. Para habilitar, siga as etapas em Application integration for full table access.
nota
Ao acessar tabelas entre contas, o acesso completo à tabela deve ser habilitado nas contas de produtor e consumidor. Da mesma forma, ao acessar tabelas entre regiões, essa configuração deve ser ativada nas regiões produtora e consumidora.
Etapa 2: configurar permissões do IAM para o perfil de runtime do trabalho
Para acesso de leitura ou gravação aos dados subjacentes, além das permissões do Lake Formation, uma função de tempo de execução do trabalho precisa da permissão lakeformation:GetDataAccess
do IAM. Com essa permissão, o Lake Formation concede a solicitação de credenciais temporárias para acessar os dados.
Veja a seguir um exemplo de política de como fornecer permissões do IAM para acessar um script no Amazon S3, fazer upload de registros para o S3, permissões da API AWS Glue e permissão para acessar o Lake Formation.
Etapa 2.1 Configurar as permissões do Lake Formation
As tarefas do Spark que leem dados do S3 exigem a permissão Lake Formation SELECT.
O Spark faz com que write/delete os dados no S3 exijam a permissão Lake Formation ALL (SUPER).
As tarefas do Spark que interagem com o catálogo da Glue Data exigem as permissões DESCRIBE, ALTER, DROP, conforme apropriado.
Para obter mais informações, consulte Conceder permissões nos recursos do Catálogo de Dados.
Etapa 3: inicializar uma sessão do Spark para acesso total à tabela usando o Lake Formation
Pré-requisitos
AWS O Glue Data Catalog deve ser configurado como um metastore para acessar as tabelas do Lake Formation.
Defina as seguintes configurações para configurar o catálogo Glue como uma metastore:
--conf spark.sql.catalogImplementation=hive --conf spark.hive.metastore.client.factory.class=com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
Para obter mais informações sobre como ativar o catálogo de dados para o EMR Serverless, consulte Configuração do Metastore para o EMR Serverless.
Para acessar tabelas registradas no AWS Lake Formation, as seguintes configurações precisam ser definidas durante a inicialização do Spark para configurar o Spark para usar as credenciais do Lake Formation AWS .
-
spark.hadoop.fs.s3.credentialsResolverClass=com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver
: Configure o EMR Filesystem (EMRFS) para usar as credenciais do Lake AWS Formation S3 para tabelas registradas do Lake Formation. Se a tabela não estiver registrada, use as credenciais do perfil de runtime do trabalho. -
spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject=true
espark.hadoop.fs.s3.folderObject.autoAction.disabled=true
: configure o EMRFS para usar o cabeçalho do tipo de conteúdo application/x-directory em vez do sufixo $folder$ ao criar pastas do S3. Isso é necessário ao ler as tabelas do Lake Formation, pois as credenciais do Lake Formation não permitem a leitura de pastas de tabelas com o sufixo $folder$. -
spark.sql.catalog.skipLocationValidationOnCreateTable.enabled=true
: configure o Spark para ignorar a validação da ausência do local da tabela antes da criação. Isso é necessário para tabelas registradas do Lake Formation, pois as credenciais do Lake Formation para verificar o local vazio estão disponíveis somente após a criação da tabela do Glue Data Catalog. Sem essa configuração, as credenciais do perfil de runtime do trabalho validarão o local da tabela vazia. -
spark.sql.catalog.createDirectoryAfterTable.enabled=true
: configure o Spark para criar a pasta do Amazon S3 após a criação da tabela no metastore do Hive. Isso é necessário para tabelas registradas do Lake Formation, pois as credenciais do Lake Formation para criar a pasta S3 estão disponíveis somente após a criação da tabela do Glue Data Catalog. -
spark.sql.catalog.dropDirectoryBeforeTable.enabled=true
: configure o Spark para eliminar a pasta S3 antes da exclusão da tabela na metastore do Hive. Isso é necessário para tabelas registradas do Lake Formation, pois as credenciais do Lake Formation para eliminar a pasta S3 não estão disponíveis após a exclusão da tabela do Glue Data Catalog. -
spark.sql.catalog.<catalog>.glue.lakeformation-enabled=true
: Configure o catálogo do Iceberg para usar as credenciais do AWS Lake Formation S3 para tabelas registradas do Lake Formation. Se a tabela não estiver registrada, use as credenciais de ambiente padrão.
Configurar o modo de acesso total à tabela no SageMaker Unified Studio
Para acessar as tabelas registradas do Lake Formation a partir de sessões interativas do Spark em JupyterLab cadernos, você deve usar o modo de permissão de compatibilidade. Use o comando mágico %%configure para definir sua configuração do Spark. Escolha a configuração com base no seu tipo de tabela:
Substitua os espaços reservados:
S3_DATA_LOCATION
: Seu caminho de bucket do S3REGION
: AWS região (por exemplo, us-east-1)ACCOUNT_ID
: ID AWS da sua conta
nota
Você precisa definir essas configurações antes de executar qualquer operação do Spark em seu caderno.
Operações com Suporte
Essas operações usarão as credenciais do AWS Lake Formation para acessar os dados da tabela.
CRIAR TABELA
ALTER TABLE
INSERT INTO
INSERT OVERWRITE
UPDATE
MERGE INTO
DELETE FROM
ANALYZE TABLE
REPAIR TABLE
DESCARTAR TABELA
Consultas de fontes de dados do Spark
Gravações na fonte de dados do Spark
nota
As operações não listadas acima continuarão usando as permissões do IAM para acessar os dados da tabela.
Considerações
Se uma tabela do Hive for criada usando uma tarefa que não tem acesso total à tabela habilitado e nenhum registro for inserido, as leituras ou gravações subsequentes de uma tarefa com acesso total à tabela falharão. Isso ocorre porque o EMR Spark sem acesso total à tabela adiciona o
$folder$
sufixo ao nome da pasta da tabela. Para resolver isso, você tem as seguintes opções:Insira pelo menos uma linha na tabela diretamente de um trabalho no qual o FTA não esteja habilitado.
Configure a tarefa que não tem o FTA habilitado para não usar o
$folder$
sufixo no nome da pasta no S3. É possível fazer isso definindo a configuraçãospark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject=true
do Spark.Crie uma pasta S3 no local da tabela
s3://path/to/table/table_name
usando o console do AWS S3 ou a CLI do AWS S3.
O acesso total à tabela funciona exclusivamente com EMR Filesystem (EMRFS). O sistema de arquivos S3A não é compatível.
O acesso total à tabela é compatível com tabelas do Hive e do Iceberg. Ainda não há suporte para tabelas do Hudi e do Delta.
As tarefas que fazem referência a tabelas com regras de controle de acesso refinado (FGAC) do Lake Formation ou visualizações do catálogo de dados do Glue falharão. Para consultar uma tabela com regras do FGAC ou uma exibição do catálogo de dados do Glue, você precisa usar o modo FGAC. Você pode ativar o modo FGAC seguindo as etapas descritas na AWS documentação: Usando o EMR Serverless com o Lake AWS Formation para um controle de acesso refinado.
O acesso total à tabela não é compatível com Spark Streaming.
Ao gravar o Spark DataFrame em uma tabela do Lake Formation, somente o modo APPEND é suportado:
df.write.mode("append").saveAsTable(
table_name
)