Neste tutorial, mostramos como conectar uma tabela ou visualização
do BigQuery para ler e gravar dados de um notebook do Databricks. As etapas são
descritas usando o
Console do Google Cloud e
os espaços de trabalho do Databricks.
Também é possível executar essas etapas usando as ferramentas de linha de comando
gcloud
e databricks
, embora essa orientação esteja fora do escopo deste
tutorial.
O Databricks no Google Cloud é um ambiente do Databricks hospedado no Google Cloud, executado no Google Kubernetes Engine (GKE) e que oferece integração interna com o BigQuery e outras tecnologias do Google Cloud. Se você é novo no Databricks, assista ao vídeo Introdução à Databricks Unified Data Platform para ter uma visão geral da plataforma de lakehouse do Databricks.
Objetivos
- Configurar o Google Cloud para se conectar ao Databricks.
- Implantar o Databricks no Google Cloud.
- Consultar o BigQuery no Databricks.
Custos
Neste tutorial, usamos componentes faturáveis do Console do Google Cloud, incluindo o BigQuery e o GKE. São aplicados os preços do BigQuery e os preços do GKE. Para informações sobre os custos associados a uma conta do Databricks em execução no Google Cloud, consulte a seção Configurar sua conta e criar um espaço de trabalho na documentação do Databricks.
Antes de começar
Antes de conectar o Databricks ao BigQuery, conclua as etapas a seguir:
- Ative a API BigQuery Storage.
- Crie uma conta de serviço para o Databricks.
- Crie um bucket do Cloud Storage para armazenamento temporário.
Ative a API BigQuery Storage
A API BigQuery Storage é ativada por padrão para todos os novos projetos em que o BigQuery for usado. Para projetos existentes que não têm a API ativada, siga estas instruções:
No console do Google Cloud, acesse a página da API BigQuery Storage.
Confirme se a API BigQuery Storage está ativada.
Crie uma conta de serviço para o Databricks
Em seguida, crie uma conta de serviço do Identity and Access Management (IAM) para permitir que um cluster do Databricks execute consultas no BigQuery. Recomendamos que você conceda a essa conta de serviço o privilégio mínimo necessário para executar as tarefas. Consulte Papéis e permissões do BigQuery.
No Console do Google Cloud, acesse a página Contas de serviço.
Clique em Criar conta de serviço, nomeie a conta de serviço como
databricks-bigquery
, insira uma breve descrição, comoDatabricks tutorial service account
, e clique em Criar e continuare.Em Conceder acesso a essa conta de serviço a um projeto, especifique os papéis dela. Para conceder à conta de serviço permissão para ler dados com o espaço de trabalho do Databricks e a tabela do BigQuery no mesmo projeto, especificamente sem fazer referência a uma visualização materializada, conceda os seguintes papéis:
- Usuário de sessão de leitura do BigQuery
- Visualizador de dados do BigQuery
Para conceder permissão para gravar dados, conceda os seguintes papéis:
- Usuário de jobs do BigQuery
- Editor de dados do BigQuery
Registre o endereço de e-mail da nova conta de serviço para referência nas etapas futuras.
Clique em Concluído.
crie um bucket do Cloud Storage
Para gravar no BigQuery, o cluster do Databricks precisa acessar um bucket do Cloud Storage para armazenar os dados gravados em buffer.
No console do Google Cloud, acesse o Navegador do Cloud Storage.
Clique em Criar bucket para abrir a caixa de diálogo Criar um bucket.
Especifique um nome para o bucket usado para gravar dados no BigQuery. O nome do bucket precisa ser um nome exclusivo globalmente. Se você especificar um nome de bucket que já existe, o Cloud Storage responderá com uma mensagem de erro. Se isso ocorrer, especifique um nome diferente para o bucket.
Para este tutorial, use as configurações padrão do local de armazenamento, classe de armazenamento, controle de acesso e configurações avançadas.
Clique em Criar para criar um bucket do Cloud Storage.
Clique em Permissão, Adicionar e, em seguida, especifique o endereço de e-mail da conta de serviço que você criou para acesso ao Databricks na página de contas de serviço.
Clique em Selecionar um papel e adicione o papel Administrador do Storage.
Clique em Save.
Implante o Databricks no Google Cloud
Conclua as etapas a seguir para se preparar para implantar o Databricks no Google Cloud.
- Para configurar sua conta do Databricks, siga as instruções na documentação do Databricks, Configurar sua conta do Databricks no Google Cloud.
- Depois de se inscrever, saiba mais sobre como Gerenciar sua conta da Databricks.
Crie um espaço de trabalho, um cluster e um notebook do Databricks
Nas etapas a seguir, descrevemos como criar um espaço de trabalho do Databricks, um cluster e um notebook do Python para gravar códigos para acessar o BigQuery.
Confirme os pré-requisitos do Databrick.
Crie seu primeiro espaço de trabalho. No console da conta do Databricks, clique em Criar espaço de trabalho.
Especifique
gcp-bq
como Nome do espaço de trabalho e selecione sua Região.Para determinar o ID do projeto do Google Cloud, acesse o console do Google Cloud e copie o valor para o campo ID do projeto do Google Cloud.
Clique em Salvar para criar seu espaço de trabalho do Databricks.
Para criar um cluster do Databricks com o ambiente de execução do Databricks 7.6 ou posterior, na barra de menu à esquerda, selecione Clusters e depois clique em Criar cluster na parte superior.
Especifique o nome e o tamanho do cluster, clique em Opções avançadas e especifique os endereços de e-mail da sua conta de serviço do Google Cloud.
Clique em Criar cluster.
Para criar um notebook Python para o Databricks, siga as instruções em Criar um notebook.
Como consultar o BigQuery no Databricks
Com a configuração acima, você pode conectar o Databricks com segurança ao BigQuery. O Databricks usa uma bifurcação do adaptador Google Spark de código aberto para acessar o BigQuery.
O Databricks reduz a transferência de dados e acelera as consultas com o
push-down automático de determinados predicados de consulta, como a filtragem de colunas aninhadas
no BigQuery. Além disso, o recurso adicionado para executar primeiro uma consulta SQL no BigQuery com a API query()
reduz o tamanho da transferência do conjunto de dados resultante.
Nas etapas a seguir, descrevemos como acessar um conjunto de dados no BigQuery e gravar seus próprios dados no BigQuery.
Acessar um conjunto de dados público no BigQuery
O BigQuery fornece uma lista de conjuntos de dados públicos disponíveis. Para consultar o conjunto de dados de Shakespeare do BigQuery, que faz parte dos conjuntos de dados públicos, siga estas etapas:
Para ler a tabela do BigQuery, use o snippet de código a seguir no notebook do Databricks.
table = "bigquery-public-data.samples.shakespeare" df = spark.read.format("bigquery").option("table",table).load() df.createOrReplaceTempView("shakespeare")
Execute o código pressionando
Shift+Return
.Agora é possível consultar a tabela do BigQuery com o Spark DataFrame (
df
). Por exemplo, use o código abaixo para mostrar as três primeiras linhas do dataframe:df.show(3)
Para consultar outra tabela, atualize a variável
table
.Um recurso importante dos notebooks do Databricks é que você pode misturar as células de diferentes linguagens, como Scala, Python e SQL, em um único notebook.
A consulta SQL a seguir permite visualizar a contagem de palavras em Shakespeare depois de executar a célula anterior que cria a visualização temporária.
%sql SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
A célula acima executa uma consulta SQL do Spark no DataFrame no cluster do Databricks, não no BigQuery. A vantagem dessa abordagem é que a análise de dados ocorre no nível do Spark, nenhuma outra chamada de API do BigQuery é emitida, e você não tem custos adicionais com o BigQuery.
Como alternativa, é possível delegar a execução de uma consulta SQL ao BigQuery com a API
query()
e otimizar para reduzir o tamanho da transferência do frame de dados resultante. Diferentemente do exemplo acima, em que o processamento foi feito no Spark, se você usar essa abordagem, as otimizações de preço e de consulta serão aplicadas para executar a consulta no BigQuery.O exemplo abaixo usa Scala, a API
query()
e o conjunto de dados público de Shakespeare no BigQuery para calcular as cinco palavras mais comuns nas obras de Shakespeare. Antes de executar o código, primeiro é necessário criar um conjunto de dados vazio no BigQuery chamadomdataset
, que pode ser referenciado pelo código. Para mais informações, consulte Como gravar dados no BigQuery.%scala // public dataset val table = "bigquery-public-data.samples.shakespeare" // existing dataset where the Google Cloud user has table creation permission val tempLocation = "mdataset" // query string val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table} GROUP BY word ORDER BY word_count DESC LIMIT 10 """ // read the result of a GoogleSQL query into a DataFrame val df2 = spark.read.format("bigquery") .option("query", q) .option("materializationDataset", tempLocation) .load() // show the top 5 common words in Shakespeare df2.show(5)
Para mais exemplos de código, consulte o Notebook de exemplo do Databricks no BigQuery.
Como gravar dados no BigQuery
As tabelas do BigQuery estão em conjuntos de dados. Antes de gravar dados em uma tabela do BigQuery, crie um novo conjunto de dados no BigQuery. Para criar um conjunto de dados para um notebook Python do Databricks, siga estas etapas:
Acesse a página do BigQuery no Console do Google Cloud.
Expanda a opção
Ações, clique em Criar conjunto de dados e, em seguida, nomeie-o comotogether
.No notebook Python do Databricks, crie um DataFrame simples do Spark a partir de uma lista do Python com três entradas de string usando o snippet de código a seguir:
from pyspark.sql.types import StringType mylist = ["Google", "Databricks", "better together"] df = spark.createDataFrame(mylist, StringType())
Adicione outra célula ao notebook que grava o DataFrame do Spark da etapa anterior na tabela
myTable
do BigQuery no conjunto de dadostogether
. A tabela será criada ou substituída. Use o nome do bucket especificado anteriormente.bucket = YOUR_BUCKET_NAME table = "together.myTable" df.write .format("bigquery") .option("temporaryGcsBucket", bucket) .option("table", table) .mode("overwrite").save()
Para verificar se você gravou os dados com sucesso, consulte e exiba sua tabela do BigQuery com o DataFrame do Spark (
df
):display(spark.read.format("bigquery").option("table", table).load)
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Antes de remover o Databricks, sempre faça backup dos seus dados e notebooks. Para limpar e remover completamente o Databricks, cancele sua assinatura do Databricks no console do Google Cloud e remova todos os recursos relacionados criados no console do Google Cloud.
Se você excluir um espaço de trabalho do Databricks, os dois buckets do Cloud Storage com os
nomes databricks-WORKSPACE_ID
e
databricks-WORKSPACE_ID-system
que foram
criados pelo Databricks
podem não serão excluídos se os buckets do Cloud Storage não estiverem vazios. Após a exclusão do espaço de trabalho, exclua esses objetos manualmente no console do Google Cloud do seu projeto.
A seguir
Nesta seção, você encontra uma lista com mais documentos e tutoriais:
- Saiba mais sobre os detalhes da avaliação gratuita do Databricks.
- Saiba mais sobre o Databricks no Google Cloud.
- Saiba mais sobre o Databricks BigQuery.
- Leia o Anúncio do blog sobre suporte do BigQuery para o Databricks.
- Saiba mais sobre os notebooks de exemplo do BigQuery.
- Saiba mais sobre o provedor Terraform para Databricks no Google Cloud.
- Leia o blog da Databricks, incluindo mais informações sobre tópicos de ciência de dados e conjuntos de dados.