Conjuntos de dados públicos do Lakehouse

O Lakehouse para Apache Iceberg hospeda conjuntos de dados públicos de alta qualidade veiculados pelo catálogo REST do Apache Iceberg, disponibilizando-os ao público em geral como parte do Google Cloud Programa de conjuntos de dados públicos.

Esses conjuntos de dados estão disponíveis para acesso somente leitura, e você pode acessá-los e integrá-los aos seus aplicativos usando o Apache Spark, Trino, Flink ou BigQuery. O Google paga pelo armazenamento desses conjuntos de dados e oferece acesso público a eles pelo Lakehouse. Você paga apenas pelas consultas realizadas nos dados.

O objetivo desses conjuntos de dados públicos é reduzir a barreira de entrada para o Iceberg. Não é necessário gerenciar a infraestrutura para aprender o Iceberg, basta se conectar. Você pode usar esses conjuntos de dados para:

  • Usar o BigQuery (pelo Lakehouse) para consultar essas tabelas diretamente usando o SQL, combinando-as com seus dados particulares.
  • Testar as configurações do mecanismo OSS (por exemplo, Spark, Trino ou Flink) em um catálogo REST ativo.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Lakehouse API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Antes de se conectar ao Apache Spark, você precisa ter o seguinte:

Locais de conjuntos de dados públicos

Cada conjunto de dados públicos é armazenado em um local específico, como US ou EU. Os conjuntos de dados públicos do Lakehouse são armazenados no US local multirregional location. Ao consultar um conjunto de dados públicos, verifique se o local de processamento é compatível com o local do conjunto de dados.

Acessar conjuntos de dados públicos usando o Apache Spark

Como os conjuntos de dados públicos do Lakehouse são veiculados pelo catálogo REST do Iceberg, é possível acessá-los pelo Apache Spark e outros mecanismos compatíveis. Você pode se conectar ao conjunto de dados públicos usando qualquer ambiente Spark padrão, como local, Serviço Gerenciado para Apache Spark ou outros fornecedores de nuvem.

Conectar-se ao Apache Spark

Use as seguintes flags de configuração ao iniciar a sessão do Spark SQL. Essas flags configuram um catálogo chamado lakehouse-sample que aponta para o endpoint REST público.

spark-sql \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0,org.apache.iceberg:iceberg-gcp-bundle:1.10.0 \
  --conf spark.hadoop.hive.cli.print.header=true \
  --conf spark.sql.catalog.bqms=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.bqms.type=rest \
  --conf spark.sql.catalog.bqms.uri=https://biglake.googleapis.com/iceberg/v1/restcatalog \
  --conf spark.sql.catalog.bqms.warehouse=gs://biglake-public-nyc-taxi-iceberg \
  --conf spark.sql.catalog.bqms.header.x-goog-user-project=PROJECT_ID \
  --conf spark.sql.catalog.bqms.rest.auth.type=google \
  --conf spark.sql.catalog.bqms.io-impl=org.apache.iceberg.gcp.gcs.GCSFileIO \
  --conf spark.sql.catalog.bqms.header.X-Iceberg-Access-Delegation=vended-credentials \
  --conf spark.sql.defaultCatalog=lakehouse-sample

Substitua PROJECT_ID pelo ID do Google Cloud projeto.

Exemplo de consultas

Depois de conectado, você terá acesso SQL completo aos conjuntos de dados. O conjunto de dados de táxi de Nova York está disponível, modelado como uma tabela do Iceberg para demonstrar os recursos de particionamento e metadados.

A consulta a seguir agrega milhões de registros para encontrar a tarifa média e a distância da viagem por número de passageiros. Ela demonstra como o Iceberg verifica arquivos de dados com eficiência sem precisar listar diretórios usando a poda de partição:

SELECT
    passenger_count,
    COUNT(1) AS num_trips,
    ROUND(AVG(total_amount), 2) AS avg_fare,
    ROUND(AVG(trip_distance), 2) AS avg_distance
FROM
    lakehouse-sample.public_data.nyc_taxicab
WHERE
    data_file_year = 2021
    AND passenger_count > 0
GROUP BY
    passenger_count
ORDER BY
    num_trips DESC;

Um dos recursos mais avançados do Iceberg é o Time Travel. É possível consultar a tabela como ela existia em um momento específico no passado. A consulta a seguir permite auditar as mudanças comparando a contagem de linhas da versão atual com um snapshot específico:

-- Compare the row count of the current version vs. a specific snapshot
SELECT
    'Current State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab
UNION ALL
SELECT
    'Past State' AS version,
    COUNT(*) AS count
FROM lakehouse-sample.public_data.nyc_taxicab VERSION AS OF 2943559336503196801Q;

Ao consultar a tabela de metadados do histórico (por exemplo, SELECT * FROM lakehouse-sample.public_data.nyc_taxicab.history), é possível encontrar IDs de snapshot e voltar para ver como o conjunto de dados cresceu ao longo do tempo.

Para mais informações, consulte Usar o catálogo de ambientes de execução do Lakehouse com o Spark, o catálogo REST do Iceberg e o Cloud Storage.

Conjuntos de dados disponíveis

O Lakehouse fornece tabelas de exemplo que podem ser consultadas como tabelas do Lakehouse.

O conjunto de dados biglake-public-nyc-taxi-iceberg inclui as seguintes tabelas no formato Apache Iceberg:

Nome Descrição
nyc_taxicab Dados de registro de viagens da Comissão de Táxis e Limusines de Nova York (TLC, na sigla em inglês).

A seguir