O Lakehouse para Apache Iceberg oferece suporte à consulta de dados remotos por meio de uma configuração de Lakehouse entre nuvens. Depois de configurado, o sistema oferece suporte ao acesso aos dados usando SQL padrão no BigQuery ou no Apache Spark no Serviço Gerenciado para Apache Spark.
Esta página mostra como consultar dados remotos depois de configurar um Lakehouse entre nuvens.
Antes de começar
Antes de consultar os dados, conclua as etapas a seguir:
- Configure o Lakehouse entre nuvens para o AWS Glue ou o Databricks Unity Catalog.
- Verifique se há dados no catálogo remoto.
Funções exigidas
Para conseguir as permissões necessárias para consultar dados federados, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Consultar dados no BigQuery:
Leitor de dados do BigQuery (
roles/bigquery.dataViewer) -
Executar jobs do BigQuery:
Usuário de jobs do BigQuery (
roles/bigquery.jobUser) -
Descobrir e ler metadados de tabelas em catálogos do Lakehouse:
Leitor do BigLake (
roles/biglake.viewer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Consultar dados
Depois de configurar a federação, você pode consultar os dados remotos usando SQL padrão no BigQuery ou no Apache Spark no Serviço Gerenciado para Apache Spark.
Lakehouse processa a tradução de metadados e o acesso seguro a dados, o que permite tratar tabelas remotas do Apache Iceberg como se fossem locais para seu Google Cloud ambiente.
Consultar no BigQuery
Para consultar tabelas federadas do Apache Iceberg, use o SQL padrão do BigQuery. O caminho da tabela segue uma estrutura de quatro partes: project.federated_catalog.namespace.table. O armazenamento em cache, a venda de credenciais e o roteamento de trânsito de CCI são processados automaticamente.
SELECT user_id, action, COUNT(*) as total_actions FROM `PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME` WHERE event_date >= '2026-04-01' GROUP BY 1, 2;
Substitua:
PROJECT_ID: o ID do Google Cloud projeto.FEDERATED_CATALOG_NAME: o nome do catálogo federado.NAMESPACE_NAME: o namespace no catálogo.TABLE_NAME: o nome da tabela.REGION: a Google Cloud região. Por exemplo,us-east4.
Também é possível executar a consulta usando a ferramenta de linha de comando bq:
bq --location="REGION" --project_id="PROJECT_ID" query --use_legacy_sql=false \ "SELECT * FROM \`PROJECT_ID.FEDERATED_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME\` LIMIT 10"
Consultar no Serviço Gerenciado para Apache Spark
É possível ler dados do Lakehouse entre nuvens diretamente dos clusters do Serviço Gerenciado para Apache Spark sem gerenciar credenciais separadas da AWS ou conectores do S3. O Spark se conecta diretamente ao Lakehouse usando a interface padrão do catálogo REST do Apache Iceberg, em vez de usar a API BigQuery Storage Read.
Ao configurar o job do Serviço Gerenciado para Apache Spark com o endpoint REST do Lakehouse, o Lakehouse fornece automaticamente credenciais temporárias e com escopo do S3 para o Spark por meio de X-Iceberg-Access-Delegation=vended-credentials. Isso permite que o Spark leia os dados subjacentes com segurança, obedecendo à configuração do catálogo.
Para configurar o job do Serviço Gerenciado para Apache Spark com o endpoint REST do Lakehouse:
Configure o job do Spark.
Nesse comando, transmita as propriedades do catálogo REST do Apache Iceberg ao enviar o job do Spark. Isso mapeia o catálogo federado do Lakehouse para um nome de catálogo local do Spark (por exemplo,
my_catalog):gcloud dataproc jobs submit pyspark PYSPARK_SCRIPT_PATH \ --cluster="CLUSTER_NAME" \ --region="REGION" \ --properties="spark.sql.catalog.SPARK_CATALOG_NAME=org.apache.iceberg.spark.SparkCatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.type=rest,\ spark.sql.catalog.SPARK_CATALOG_NAME.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog,\ spark.sql.catalog.SPARK_CATALOG_NAME.warehouse=bl://projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME,\ spark.sql.catalog.SPARK_CATALOG_NAME.io-impl=org.apache.iceberg.aws.s3.S3FileIO,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.X-Iceberg-Access-Delegation=vended-credentials,\ spark.sql.catalog.SPARK_CATALOG_NAME.rest-metrics-reporting-enabled=false,\ spark.sql.catalog.SPARK_CATALOG_NAME.header.x-goog-user-project=PROJECT_ID"
Consulte os dados no PySpark.
Esse comando usa o Spark para ler diretamente do catálogo do Lakehouse e, em seguida, executa uma transformação padrão.
df = spark.table("SPARK_CATALOG_NAME.NAMESPACE_NAME.TABLE_NAME") df.filter(df.action == "purchase").show()
Substitua:
PYSPARK_SCRIPT_PATH: o caminho para o job do PySpark.CLUSTER_NAME: o nome do cluster do Serviço Gerenciado para Apache Spark.REGION: a Google Cloud região. Por exemplo,us-east4.PROJECT_ID: o ID do Google Cloud projeto.SPARK_CATALOG_NAME: o nome que você quer usar para o catálogo do Spark.FEDERATED_CATALOG_NAME: o nome do catálogo federado.NAMESPACE_NAME: o namespace no catálogo.TABLE_NAME: o nome da tabela.