Ler tabelas gerenciadas do Apache Iceberg com o Apache Spark
As seções a seguir descrevem como ler tabelas gerenciadas usando tabelas gerenciadas do Apache Iceberg (doravante tabelas gerenciadas do Iceberg) com o Apache Spark.
Antes de começar
Entenda os diferentes tipos de tabelas do BigLake e as implicações do uso delas na visão geral das tabelas do BigLake.
Antes de ler tabelas gerenciadas do Iceberg com o Apache Spark, verifique se você configurou uma conexão de recurso do Cloud com um bucket de armazenamento. Sua conexão precisa de permissões de gravação no bucket de armazenamento, conforme especificado na seção Funções necessárias a seguir. Para mais informações sobre os papéis e as permissões necessários para conexões, consulte Gerenciar conexões.
Funções exigidas
Para receber as permissões necessárias para permitir que o BigQuery gerencie tabelas no seu projeto, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Para consultar dados:
- Leitor de dados do BigQuery (
roles/bigquery.dataViewer) no seu projeto - Usuário do BigQuery (
roles/bigquery.user) no seu projeto
- Leitor de dados do BigQuery (
-
Conceda à conta de serviço de conexão os seguintes papéis para que ela possa ler e gravar dados no Cloud Storage:
- Usuário do objeto de armazenamento (
roles/storage.objectUser) no bucket - Leitor de bucket legado do Storage (
roles/storage.legacyBucketReader) no bucket
- Usuário do objeto de armazenamento (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para permitir que o BigQuery gerencie tabelas no seu projeto. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para permitir que o BigQuery gerencie tabelas no seu projeto:
-
bigquery.connections.delegateno seu projeto -
bigquery.jobs.createno seu projeto -
bigquery.readsessions.createno seu projeto -
bigquery.tables.getno seu projeto -
bigquery.tables.getDatano seu projeto -
storage.buckets.getno seu bucket -
storage.objects.createno seu bucket -
storage.objects.deleteno seu bucket -
storage.objects.getno seu bucket -
storage.objects.listno seu bucket
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Ler tabelas gerenciadas do Iceberg com o Apache Spark
O exemplo a seguir configura seu ambiente para usar o Spark SQL com o Apache Iceberg e executa uma consulta para buscar dados de uma tabela gerenciada do Iceberg especificada.
spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-ICEBERG_VERSION_NUMBER \ --conf spark.sql.catalog.CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.CATALOG_NAME.type=hadoop \ --conf spark.sql.catalog.CATALOG_NAME.warehouse='BUCKET_PATH' \ # Query the table SELECT * FROM CATALOG_NAME.FOLDER_NAME;
Substitua:
- ICEBERG_VERSION_NUMBER: a versão atual do ambiente de execução do Apache Spark Iceberg. Faça o download da versão mais recente em Lançamentos do Spark.
- CATALOG_NAME: o catálogo para referenciar sua tabela gerenciada do Iceberg.
- BUCKET_PATH: o caminho para o bucket que contém os arquivos da tabela. Por exemplo,
gs://mybucket/. - FOLDER_NAME: a pasta que contém os arquivos da tabela.
Por exemplo,
myfolder.