Pular para o conteúdo principal

Importar arquivos do Google Drive para o Databricks

info

Beta

Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a este recurso na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.

O conector padrão do Google Drive no LakeFlow Connect permite que você use as funções Databricks Spark e SQL (read_files, spark.read, COPY INTO e Auto Loader) para criar dataframes Spark , visualizações materializadas e tabelas de transmissão diretamente de arquivos no Google Drive.

Com essa abordagem, você pode criar um pipeline personalizado para casos de uso comuns de ingestão de arquivos:

  • Ingestão de arquivos de transmissão (não estruturados): Ingestão de vários arquivos de origem (por exemplo, PDFs, Google Docs e Google Slides) em uma única tabela de destino como dados binários, ideal para pipelines RAG.
  • Ingestão de arquivos de transmissão (estruturada): Mesclagem de vários arquivos de origem (por exemplo, arquivos CSV e JSON ) em uma única tabela de destino estruturada.
  • Ingestão de vários arquivos: Ingestão de um único arquivo específico (como uma planilha do Google) ou de vários arquivos em uma tabela de destino.

Estas interfaces são suportadas:

  • Pacotes de Automação Declarativa
  • APIs do Databricks
  • SDKs do Databricks
  • CLI do Databricks

Limitações

  • O conector é somente API e não suporta a criação pipeline na interface do usuário Databricks .
  • Você pode usar a opção pathGlobFilter para filtrar arquivos por nome (por exemplo, pathGlobFilter => '*.csv'). Os formatos integrados do Google (por exemplo, Google Docs ou Google Sheets) não podem ser filtrados usando esta opção. O filtro de caminho de pasta também não é suportado.
  • Os formatos não suportados incluem Google Forms, Google Sites, Google Jams e Google Vids. O processo de ingestão ignora formatos não suportados.
  • A configuração recursiveFileLookup=false não é suportada para leituras em lote Spark . Usar recursiveFileLookup=false terá o mesmo comportamento que recursiveFileLookup=true.

Requisitos

Antes de começar, verifique se você tem:

  • Um workspace compatível com o Catálogo Unity.
  • CREATE CONNECTION permissões.
  • Databricks Runtime 17.3 ou acima.
  • O recurso Beta do formato de arquivo Excel está ativado, caso você queira importar arquivos do Google Sheets ou do Excel. Consulte Ler arquivos do Excel.
  • Uma account do Google com as permissões necessárias para criar um projeto no Google Cloud.

Configurar OAuth 2.0

Configure um projeto no Google Cloud e habilite a APIdo Google Drive.

  1. Acesse o console do Google Cloud.
  2. Criar um novo projeto. Você poderá ser solicitado a configurar a autenticação de dois fatores.
  3. Acesse APIs & serviços > biblioteca .
  4. Pesquise por "API do Google Drive".
  5. Selecione a API do Google Drive .
  6. Selecione Ativar .

Configure a tela de consentimento OAuth para o seu projeto.

  1. Na tela inicial do console do Google Cloud, acesse APIs e serviços > Tela de consentimento OAuth . Você verá uma mensagem dizendo "A plataforma de autenticação do Google ainda não está configurada".
  2. Selecione " Obter início" .
  3. Preencha a seção de informações do aplicativo . Insira qualquer nome para o nome do aplicativo (por exemplo, Databricks connection). O email de suporte pode ser qualquer email da sua organização.
  4. Selecione Avançar .
  5. Na seção Público-alvo , selecione Externo e, em seguida, selecione Próximo .
  6. Preencha a seção Informações de contato e selecione Próximo .
  7. Analise a Política de Dados do Usuário do serviço API do Google e selecione Criar .
  8. Volte para a Plataforma de Autenticação do Google > Acesso a dados .
  9. Selecione Adicionar ou remover escopos .
  10. Adicione o seguinte escopo na seção Adicionar escopos manualmente , selecione Adicionar à tabela e, em seguida, selecione Atualizar : https://www.googleapis.com/auth/drive.readonly
  11. Selecione Salvar .

Criar credenciais de cliente OAuth 2.0

  1. Na tela inicial do console do Google Cloud, acesse APIs e serviços > Credenciais .
  2. Selecione Criar credenciais > ID do cliente OAuth .
  3. Selecione "Aplicação Web" e defina um nome personalizado.
  4. Em URIs de redirecionamento autorizados , selecione Adicionar URI .
  5. Adicione um URI de redirecionamento para <databricks-instance-url>/login/oauth/google.html, substituindo <databricks-instance-url> pela URL da sua instância do Databricks. Por exemplo: https://instance-name.databricks.com/login/oauth/google.html
  6. Selecione Criar . Uma caixa de diálogo com suas credenciais será exibida.
  7. Registre os seguintes valores. Alternativamente, você pode download o arquivo JSON do cliente OAuth , que contém essas informações:
    • ID do cliente (formato: 0123******-********************************.apps.googleusercontent.com)
    • Segredo do cliente (formato: ABCD**-****************************)

Adicione usuários de teste ao seu projeto.

  1. Acesse a Plataforma de Autenticação do Google > Público-alvo .
  2. Em Usuários de teste , selecione Adicionar usuários .
  3. Adicione o endereço email da account do Google que você usará para criar a conexão.

Criar uma conexão

  1. No workspace Databricks , selecione Catálogo > Locais externos > Conexões > Criar conexão .

  2. Na página "Informações básicas de conexão" do assistente de configuração de conexão , especifique um nome de conexão exclusivo.

  3. No menu dropdown Tipo de conexão , pesquise e selecione Google Drive .

  4. (Opcional) Adicione um comentário.

  5. Selecione Avançar .

  6. Na página de autenticação , insira o seguinte:

  7. Selecione "Fazer login com o Google" e faça login com a account do Google em "Adicionar usuários de teste ao seu projeto".

  8. Selecione Continuar e, em seguida, selecione Continuar novamente.

  9. Após ser redirecionado de volta para o workspace Databricks , selecione Criar conexão .

Importar arquivos do Google Drive

Ingerir arquivos do Google Drive usando o conector e read_files (Databricks SQL), Auto Loader (.readStream com cloudFiles), COPY INTO e spark.read. Você deve fornecer os seguintes valores:

  • O URL do Google Drive como caminho.
  • A conexão Unity Catalog usando a opção databricks.connection fonte de dados.
  • O URL do recurso do Google Drive que você deseja acessar. A URL pode se referir a um arquivo específico, uma pasta ou uma unidade inteira. Por exemplo:
    • https://docs.google.com/spreadsheets/d/12345/edit?random_query_params_here
    • https://drive.google.com/drive/u/0/folders/12345
    • https://docs.google.com/document/d/12345/edit
    • https://drive.google.com/file/d/1kiXnHmU4Y8X66ijULky5EPDNCGtT14Ps/view?usp=drive_link
    • https://drive.google.com/drive/
    • https://drive.google.com/drive/my-drive
    • https://drive.google.com/

transmissão de arquivos do Google Drive usando Auto Loader

O Auto Loader é a maneira mais eficiente de importar arquivos estruturados do Google Drive de forma incremental. Ele detecta automaticamente novos arquivos e os processa à medida que chegam. Ele também pode importar arquivos estruturados e semiestruturados, como CSV e JSON, com inferência e evolução automática de esquemas. Para obter detalhes sobre o uso do Auto Loader, consulte Padrões comuns de carregamento de dados.

Python
# Incrementally ingest new PDF files
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_gdrive_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.option("pathGlobFilter", "*.pdf")
.load("https://drive.google.com/drive/folders/1a2b3c4d...")
.select("*", "_metadata")
)

# Incrementally ingest CSV files with automatic schema inference and evolution
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_gdrive_conn")
.option("pathGlobFilter", "*.csv")
.option("inferColumnTypes", True)
.option("header", True)
.load("https://drive.google.com/drive/folders/1a2b3c4d...")
)

Leia arquivos do Google Drive usando Spark .

O exemplo a seguir mostra como importar arquivos do Google Drive em Python usando a função spark.read . Para obter uma lista dos formatos de arquivo suportados e das opções de leitura do Spark, consulte Opções Genéricas de Origem de Arquivos na documentação do Apache Spark.

A configuração recursiveFileLookup=false não é suportada para leituras em lote Spark . Usar recursiveFileLookup=false terá o mesmo comportamento que recursiveFileLookup=true.

Python
# Read unstructured data as binary files
df = (spark.read
.format("binaryFile")
.option("databricks.connection", "my_gdrive_conn")
.option("recursiveFileLookup", True)
.option("pathGlobFilter", "*.pdf")
.load("https://drive.google.com/drive/folders/1a2b3c4d..."))

# Read a batch of CSV files, infer the schema, and load the data into a DataFrame
df = (spark.read
.format("csv")
.option("databricks.connection", "my_gdrive_conn")
.option("pathGlobFilter", "*.csv")
.option("recursiveFileLookup", True)
.option("inferSchema", True)
.option("header", True)
.load("https://drive.google.com/drive/folders/1a2b3c4d..."))

Leia um único arquivo estruturado do Google Drive.

O exemplo a seguir lê uma única tab de uma planilha do Google e a carrega em um DataFrame. Isso demonstra algumas opções comuns de análise sintática.

Para obter uma lista completa das opções de análise suportadas para arquivos do Excel e do Google Sheets, consulte Ler arquivos do Excel. Para obter uma lista completa de todos os outros formatos de arquivo suportados e opções de leitura do Spark, consulte Opções Genéricas de Origem de Arquivos na documentação do Apache Spark.

Python
df = (spark.read
.format("excel") # use 'excel' for Google Sheets
.option("databricks.connection", "my_gdrive_conn")
.option("headerRows", 1) # optional
.option("inferColumns", True) # optional
.option("dataAddress", "Sheet1!A1:Z10") # optional
.load("https://docs.google.com/spreadsheets/d/9k8j7i6f..."))

Leia arquivos do Google Drive usando o Spark SQL

O exemplo a seguir mostra como importar arquivos do Google Drive em SQL usando a função de tabela read_files . Para obter detalhes sobre o uso de read_files , consulte a função com valor de tabelaread_files.

SQL
-- Read pdf files
CREATE TABLE my_table AS
SELECT * FROM read_files(
"https://drive.google.com/drive/folders/1a2b3c4d...",
`databricks.connection` => "my_gdrive_conn",
format => "binaryFile",
pathGlobFilter => "*.pdf", -- optional. Example: only ingest PDFs
schemaEvolutionMode => "none"
);

-- Read a Google Sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
"https://docs.google.com/spreadsheets/d/9k8j7i6f...",
`databricks.connection` => "my_gdrive_conn",
format => "excel",
headerRows => 1, -- optional
dataAddress => "Sheet1!A2:D10", -- optional
schemaEvolutionMode => "none"
);

Ingerir arquivos do Google Drive usando o pipeline declarativo LakeFlow Spark

nota

O conector do Google Drive requer o Databricks Runtime 17.3 ou posterior. Para usar o conector, defina "CHANNEL" = "PREVIEW" nas configurações do seu pipeline. Para obter mais informações sobre visualizações, consulte referência de propriedades do pipeline.

Este exemplo mostra como ler arquivos do Google Drive usando Auto Loader em um pipeline declarativo LakeFlow Spark . Para obter mais informações, consulte Pipeline declarativoLakeFlow Spark

SQL
-- Incrementally ingest new PDF files
CREATE OR REFRESH STREAMING TABLE gdrive_pdf_table
AS SELECT * FROM STREAM read_files(
"https://drive.google.com/drive/folders/1a2b3c4d...",
format => "binaryFile",
`databricks.connection` => "my_gdrive_conn",
pathGlobFilter => "*.pdf");

-- Incrementally ingest CSV files with automatic schema inference and evolution
CREATE OR REFRESH STREAMING TABLE gdrive_csv_table
AS SELECT * FROM STREAM read_files(
"https://drive.google.com/drive/folders/1a2b3c4d...",
format => "csv",
`databricks.connection` => "my_gdrive_conn",
pathGlobFilter => "*.csv",
"header", "true");

-- Read a specific Excel file from Google Drive in a materialized view
CREATE OR REFRESH MATERIALIZED VIEW gdrive_excel_table
AS SELECT * FROM read_files(
"https://docs.google.com/spreadsheets/d/9k8j7i6f...",
`databricks.connection` => "my_gdrive_conn",
format => "excel",
headerRows => 1, -- optional
dataAddress => "Sheet1!A2:D10", -- optional
`cloudFiles.schemaEvolutionMode` => "none"
);

Analise arquivos não estruturados com ai_parse_document

Ao importar arquivos não estruturados do Google Drive (como PDFs, documentos do Word ou arquivos do PowerPoint) usando o conector padrão do Google Drive com formato binaryFile , o conteúdo do arquivo é armazenado como dados binários brutos. Para preparar esses arquivos para cargas de trabalho AI — como RAG, pesquisa, classificação ou compreensão de documentos — você pode analisar o conteúdo binário em uma saída estruturada e pesquisável usando ai_parse_document.

O exemplo a seguir mostra como analisar documentos não estruturados armazenados em uma tabela Delta bronze chamada documents, adicionando uma nova coluna com o conteúdo analisado:

SQL
CREATE TABLE documents AS
SELECT *, _metadata FROM read_files(
"https://drive.google.com/drive/folders/1a2b3c4d...",
`databricks.connection` => "my_gdrive_conn",
format => "binaryFile",
pathGlobFilter => "*.{pdf,jpeg}"
);
SELECT *, ai_parse_document(content) AS parsed_content
FROM documents;

A coluna parsed_content contém texto extraído, tabelas, provisão de informação e metadados que podem ser usados diretamente para pipeline AI downstream.

Análise incremental com o pipeline declarativo LakeFlow Spark

Você também pode usar ai_parse_document dentro do pipeline declarativo LakeFlow Spark para habilitar a análise incremental. À medida que novos arquivos são transmitidos do Google Drive, eles são analisados automaticamente conforme seu pipeline é atualizado.

Por exemplo, você pode definir uma view materializada que analisa continuamente os documentos recém-ingeridos:

SQL
CREATE OR REFRESH STREAMING TABLE documents
AS SELECT *, "_metadata" FROM STREAM read_files(
"https://drive.google.com/drive/folders/1a2b3c4d...",
format => "binaryFile",
`databricks.connection` => "my_gdrive_conn",
pathGlobFilter => "*.{pdf,jpeg}");

CREATE OR REFRESH MATERIALIZED VIEW documents_parsed
AS
SELECT *, ai_parse_document(content) AS parsed_content
FROM documents;

Essa abordagem garante que:

  • Os arquivos do Google Drive recém-ingeridos são analisados automaticamente sempre que a view materializada é atualizada.
  • Os dados analisados permanecem sincronizados com os dados recebidos.
  • O fluxo de trabalho AI subsequente opera sempre com representações de documentos atualizadas.

Para formatos suportados e opções avançadas, consulte a funçãoai_parse_document.

Como os formatos integrados do Google são tratados

Você não precisa exportar seus arquivos integrados do Google (Documentos, Planilhas) manualmente. O conector os exporta automaticamente para um formato aberto durante a ingestão.

Formato do Google

Exportado como (default)

Google Docs

application/vnd.openxmlformats-officedocument.wordprocessingml.document (DOCX)

Planilhas do Google

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (XLSX)

Apresentações Google

application/vnd.openxmlformats-officedocument.presentationml.presentation (PPTX)

Desenhos do Google

application/pdf (PDF)

Configuração do formato de exportação do Google Drive

Você pode configurar como os arquivos nativos do Google Drive são exportados definindo as configurações do Spark usando spark.conf.set(). Essas configurações determinam o tipo MIME usado ao exportar documentos, planilhas, apresentações e desenhos do Google.

Chave de configuração:

  • fs.gdrive.format.document.exportFormato de exportação do Google Docs.
  • fs.gdrive.format.spreadsheet.exportFormato de exportação do Google Sheets.
  • fs.gdrive.format.presentation.exportFormato de exportação do Google Slides.
  • fs.gdrive.format.drawing.exportFormato de exportação do Google Drawings.

Para obter uma lista completa dos formatos de exportação compatíveis, consulte Exportar tipos MIME para documentos do Google Workspace na documentação do Google Workspace.

O exemplo a seguir exporta um arquivo do Google Docs como TXT.

Python
spark.conf.set("fs.gdrive.format.document.export", "text/plain")
df = spark.read.text("https://docs.google.com/document/d/1a2b3c4d...")

O exemplo a seguir exporta um arquivo do Google Sheets como CSV.

Python
spark.conf.set("fs.gdrive.format.spreadsheet.export", "text/csv")
df = spark.read.option("header", "true").csv("https://docs.google.com/spreadsheets/d/1a2b3c4d...")

Esquemas

Formato de arquivo binário

Ao usar format => 'binaryFile', a tabela resultante terá o seguinte esquema:

  • path (strings): O URL completo do arquivo.
  • modificationTime (timestamp): A data e hora da última modificação do arquivo.
  • length (longo): O tamanho do arquivo em bytes.
  • content (binário): O conteúdo binário bruto do arquivo.

coluna _metadata

Você pode obter informações de metadados para arquivos de entrada com a coluna _metadata , como file_name, file_path, file_size e file_modification_time. A coluna _metadata é uma coluna oculta e está disponível para todos os formatos de arquivo de entrada. Para incluir a coluna _metadata no DataFrame retornado, você deve selecioná-la explicitamente na consulta de leitura onde você especifica a origem. Para mais informações, consulte Coluna de metadados do arquivo.

Para arquivos nativos do Google Drive (como Google Docs, Google Sheets e Google Slides), o campo file_size refere-se ao tamanho do arquivo armazenado no Google Drive, não ao tamanho do arquivo no formato exportado (por exemplo, DOCX, XLSX ou PPTX).

Exemplo de seleção de _metadata:

SQL
SELECT *, _metadata FROM read_files(
"https://drive.google.com/",
`databricks.connection` => "my_connection",
format => "binaryFile"
);

Perguntas frequentes

Tenho uma pasta com vários arquivos estruturados (por exemplo, várias planilhas do Google). Como faço para carregar cada planilha ou arquivo como sua própria tabela Delta?

Você deve criar uma nova consulta de ingestão para cada arquivo a ser inserido em sua própria tabela Delta.

Meus arquivos exigem análise sintática personalizada. Como posso fornecer esses parâmetros de análise para garantir que meus arquivos sejam lidos corretamente?

O conector suporta todas as opções de formato de arquivo disponíveis no Auto Loader, COPY INTO e Spark. Para mais detalhes, consulte o seguinte:

Os arquivos em subpastas são ingeridos recursivamente?

Quando você usa as APIs do Auto Loader (spark.readStream e read_files), todas as subpastas são descobertas e ingeridas recursivamente. Isso também é verdade para lotes spark.read, onde os arquivos no caminho da pasta fornecido são sempre lidos recursivamente.

Minha planilha do Google apresenta muitas irregularidades e requer análise sintática específica e extração de intervalos de células (por exemplo, várias tabelas por planilha). O esquema não pode ser inferido automaticamente. Como devo lidar com isso?

Você pode usar as opções de análise de formato de arquivo do Excel para converter seu arquivo da Planilha Google para o formato desejado. Consulte Ler arquivos do Excel.

Alternativamente, você pode desativar a inferência de esquema no Auto Loader, PySpark ou read_files. A tabela resultante possui nomes de coluna default , todos os tipos de dados são convertidos para strings e a tabela pode ser esparsa. Em seguida, você pode realizar quaisquer transformações necessárias posteriormente.

Próximos passos