Conectar-se ao Google Cloud Storage
Este artigo descreve como configurar uma conexão do Azure Databricks para ler e gravar tabelas e dados armazenados no Google Cloud Storage (GCS).
Para ler ou gravar em um bucket do GCS, você deve criar uma conta de serviço anexada e associar o bucket à conta de serviço. Você deve conectar-se ao bucket diretamente com uma chave que você gera para a conta de serviço.
Acessar um bucket do GCS diretamente com uma chave de conta de serviço do Google Cloud
Para ler e gravar diretamente em um bucket, configure uma chave definida na sua configuração do Spark.
Etapa 1: Configurar a conta de serviço do Google Cloud usando o Google Cloud Console
Você deve criar uma conta de serviço para o cluster do Azure Databricks. O Databricks recomenda fornecer a essa conta de serviço os privilégios mínimos necessários para execução das tarefas.
Clique em IAM e Administrador no painel de navegação esquerdo.
Clique em Contas de serviço.
Clique em + CRIAR CONTA DE SERVIÇO.
Insira o nome e a descrição da conta de serviço.
Clique em CRIAR.
Clique em CONTINUAR.
Clique em CONCLUÍDO.
Etapa 2: criar uma chave para acessar o bucket do GCS diretamente
Aviso
A chave JSON gerada para a conta de serviço é uma chave privada que só deve ser compartilhada com usuários autorizados, pois controla o acesso a conjuntos de dados e recursos em sua conta do Google Cloud.
- No console do Google Cloud, na lista de contas de serviço, clique na conta recém-criada.
- Na seção Chaves, clique em ADICIONAR CHAVE > Criar chave.
- Aceite o tipo de chave JSON.
- Clique em CRIAR. O arquivo de chave é baixado para o computador.
Etapa 3: configurar o bucket do GCS
Criar um bucket
Crie um bucket, caso ainda não tenha:
Clique em Armazenamento no painel de navegação esquerdo.
Clique em CRIAR BUCKET.
Clique em CRIAR.
Configurar o bucket
Configure os detalhes do bucket.
Clique na guia Permissões.
Ao lado do rótulo Permissões, clique em ADICIONAR.
Forneça a permissão de Administrador de armazenamento para a conta de serviço no bucket das funções de Armazenamento em Nuvem.
Clique em SALVAR.
Etapa 4: colocar a chave da conta de serviço nos segredos do Databricks
O Databricks recomenda o uso de escopos de segredos para armazenar todas as credenciais. Você pode colocar a chave privada e a ID da chave privada do arquivo JSON de chave em escopos secretos do Databricks. Você pode conceder aos usuários, entidades de serviço e grupos em seu workspace acesso para ler os escopos do segredo. Isso protege a chave de conta de serviço e ao mesmo tempo permite que os usuários acessem o GCS. Para criar um escopo de segredo, consulte Gerenciar segredos.
Etapa 5: configurar um cluster do Azure Databricks
Na guia Configuração do Spark, defina uma configuração global ou uma configuração por bucket. Os exemplos a seguir definem as chaves usando valores armazenados como segredos do Databricks.
Observação
Use o controle de acesso do cluster e o controle de acesso do notebook juntos para proteger o acesso à conta de serviço e aos dados no bucket do GCS. Consulte Permissões de computação e Colaborar usando notebooks do Databricks.
Configuração global
Use essa configuração se precisar usar as credenciais fornecidas para acessar todos os buckets.
spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.fs.gs.auth.service.account.email <client-email>
spark.hadoop.fs.gs.project.id <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id {{secrets/scope/gsa_private_key_id}}
Substitua <client-email>
e <project-id>
pelos valores desses nomes de campo exatos do arquivo de chave JSON.
Configuração por bucket
Use essa configuração se precisar configurar credenciais para buckets específicos. A sintaxe para configuração por bucket acrescenta o nome do bucket ao final de cada configuração, como no exemplo a seguir.
Importante
As configurações por bucket podem ser usadas além das configurações globais. Quando especificadas, as configurações por bucket substituem as configurações globais.
spark.hadoop.google.cloud.auth.service.account.enable.<bucket-name> true
spark.hadoop.fs.gs.auth.service.account.email.<bucket-name> <client-email>
spark.hadoop.fs.gs.project.id.<bucket-name> <project-id>
spark.hadoop.fs.gs.auth.service.account.private.key.<bucket-name> {{secrets/scope/gsa_private_key}}
spark.hadoop.fs.gs.auth.service.account.private.key.id.<bucket-name> {{secrets/scope/gsa_private_key_id}}
Substitua <client-email>
e <project-id>
pelos valores desses nomes de campo exatos do arquivo de chave JSON.
Etapa 6: leitura do GCS
Para ler no bucket do GCS, use um comando de leitura do Spark em qualquer formato com suporte, por exemplo:
df = spark.read.format("parquet").load("gs://<bucket-name>/<path>")
Para gravar no bucket do GCS, use um comando de gravação do Spark em qualquer formato com suporte, por exemplo:
df.write.mode("<mode>").save("gs://<bucket-name>/<path>")
Substitua <bucket-name>
pelo nome do bucket que você criou na Etapa 3: configurar o bucket do GCS.