Cómo leer tablas administradas de Apache Iceberg con Apache Spark
En las siguientes secciones, se describe cómo leer tablas administradas con tablas administradas de Apache Iceberg (en adelante, tablas administradas de Iceberg) con Apache Spark.
Antes de comenzar
Comprende los diferentes tipos de tablas de BigLake y las implicaciones de usarlas en la descripción general de las tablas de BigLake.
Antes de leer tablas administradas de Iceberg con Apache Spark, asegúrate de haber configurado una conexión de recursos de Cloud a un bucket de almacenamiento. Tu conexión necesita permisos de escritura en el bucket de almacenamiento, como se especifica en la siguiente sección Roles obligatorios. Para obtener más información sobre los roles y permisos necesarios para las conexiones, consulta Administra conexiones.
Roles obligatorios
Para obtener los permisos que necesitas para permitir que BigQuery administre las tablas de tu proyecto, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Para consultar datos, haz lo siguiente:
- Visualizador de datos de BigQuery (
roles/bigquery.dataViewer) en tu proyecto - Usuario de BigQuery (
roles/bigquery.user) en tu proyecto
- Visualizador de datos de BigQuery (
-
Otorga a la cuenta de servicio de conexión los siguientes roles para que pueda leer y escribir datos en Cloud Storage:
- Usuario de objetos de almacenamiento (
roles/storage.objectUser) en el bucket - Lector de depósitos heredados de Storage (
roles/storage.legacyBucketReader) en el bucket
- Usuario de objetos de almacenamiento (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para permitir que BigQuery administre las tablas de tu proyecto. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para permitir que BigQuery administre las tablas de tu proyecto:
bigquery.connections.delegateen tu proyectobigquery.jobs.createen tu proyectobigquery.readsessions.createen tu proyectobigquery.tables.geten tu proyectobigquery.tables.getDataen tu proyecto-
storage.buckets.geten tu bucket -
storage.objects.createen tu bucket -
storage.objects.deleteen tu bucket -
storage.objects.geten tu bucket -
storage.objects.listen tu bucket
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Cómo leer tablas administradas de Iceberg con Apache Spark
En el siguiente ejemplo, se configura tu entorno para usar Spark SQL con Apache Iceberg y, luego, se ejecuta una consulta para recuperar datos de una tabla administrada de 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;
Reemplaza lo siguiente:
- ICEBERG_VERSION_NUMBER: Es la versión actual del entorno de ejecución de Apache Spark Iceberg. Descarga la versión más reciente de Spark Releases.
- CATALOG_NAME: Es el catálogo para hacer referencia a tu tabla administrada de Iceberg.
- BUCKET_PATH: Es la ruta de acceso al bucket que contiene los archivos de la tabla. Por ejemplo,
gs://mybucket/ - FOLDER_NAME: Es la carpeta que contiene los archivos de la tabla.
Por ejemplo,
myfolder