레이크하우스 공개 데이터 세트

Google Cloud LakehouseApache Iceberg REST 카탈로그를 통해 제공되는 고품질 공개 데이터 세트를 호스팅하여 Google Cloud공개 데이터 세트 프로그램의 일부로 일반 대중에게 제공합니다.

이러한 데이터 세트는 읽기 전용 액세스가 가능하며 Apache Spark, Trino, Flink 또는 BigQuery를 사용하여 액세스하고 애플리케이션에 통합할 수 있습니다. 이러한 데이터 세트의 스토리지 비용은 Google에서 부담하며 레이크하우스를 통해 데이터에 대한 공개 액세스를 제공합니다. 사용자에게는 데이터에 대한 쿼리 요금만 부과됩니다.

이러한 공개 데이터 세트의 목표는 Iceberg의 진입 장벽을 낮추는 것입니다. Iceberg를 학습하기 위해 인프라를 관리할 필요는 없으며 연결만 하면 됩니다. 이러한 데이터 세트를 사용하여 다음 작업을 할 수 있습니다.

  • Lakehouse를 통해 BigQuery를 사용하여 SQL로 이러한 테이블을 직접 쿼리하고 비공개 데이터와 결합합니다.
  • 실시간 REST 카탈로그에 대해 OSS 엔진 (예: Spark, Trino, Flink) 구성을 테스트합니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  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

Apache Spark에 연결하려면 다음이 필요합니다.

공개 데이터세트 위치

각 공개 데이터 세트는 US 또는 EU와 같은 특정 위치에 저장됩니다. Lakehouse 공개 데이터 세트는 US 멀티 리전 위치에 저장됩니다. 공개 데이터 세트를 쿼리할 때는 처리 위치가 데이터 세트 위치와 호환되는지 확인하세요.

Apache Spark를 사용하여 공개 데이터 세트에 액세스

레이크하우스 공개 데이터 세트는 Iceberg REST 카탈로그를 통해 제공되므로 Apache Spark 및 기타 호환 엔진에서 액세스할 수 있습니다. 온프레미스, Managed Service for Apache Spark 또는 기타 클라우드 공급업체와 같은 표준 Spark 환경을 사용하여 공개 데이터 세트에 연결할 수 있습니다.

Apache Spark에 연결

Spark SQL 세션을 시작할 때 다음 구성 플래그를 사용하세요. 이러한 플래그는 공개 REST 엔드포인트를 가리키는 lakehouse-sample라는 카탈로그를 구성합니다.

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

PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

쿼리 예

연결되면 데이터 세트에 대한 전체 SQL 액세스 권한이 부여됩니다. 파티셔닝 및 메타데이터 기능을 보여주기 위해 Iceberg 테이블로 모델링된 NYC 택시 데이터 세트를 사용할 수 있습니다.

다음 쿼리는 수백만 개의 레코드를 집계하여 승객 수별 평균 요금과 이동 거리를 찾습니다. 파티션 가지치기를 사용하여 디렉터리를 나열하지 않고도 Iceberg가 데이터 파일을 효율적으로 스캔하는 방법을 보여줍니다.

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;

Iceberg의 가장 강력한 기능 중 하나는 Time Travel입니다. 과거의 특정 시점에 존재했던 테이블을 쿼리할 수 있습니다. 다음 쿼리를 사용하면 현재 버전의 행 수와 특정 스냅샷을 비교하여 변경사항을 감사할 수 있습니다.

-- 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;

기록 메타데이터 테이블 (예: SELECT * FROM bqms.public_data.nyc_taxicab.history)을 쿼리하면 스냅샷 ID를 찾고 시간 경과에 따라 데이터 세트가 어떻게 증가했는지 확인할 수 있습니다.

자세한 내용은 Spark, Iceberg REST 카탈로그 및 Cloud Storage와 함께 Lakehouse 런타임 카탈로그 사용을 참고하세요.

사용 가능한 데이터 세트

레이크하우스는 레이크하우스 테이블로 쿼리할 수 있는 샘플 테이블을 제공합니다.

biglake-public-nyc-taxi-iceberg 데이터 세트에는 Apache Iceberg 형식의 다음 테이블이 포함됩니다.

이름 설명
nyc_taxicab NYC 택시 및 리무진 조합 (TLC) 운행 기록 데이터입니다.

다음 단계