View a markdown version of this page

Menggunakan Formasi Danau dengan kelompok kerja Athena Spark - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Formasi Danau dengan kelompok kerja Athena Spark

Dengan versi rilis Apache Spark versi 3.5, Anda dapat memanfaatkan AWS Lake Formation dengan Katalog AWS Glue Data di mana peran eksekusi sesi memiliki izin tabel penuh. Kemampuan ini memungkinkan Anda membaca dan menulis ke tabel yang dilindungi oleh Formasi Danau dari sesi interaktif Athena Spark Anda. Lihat bagian berikut untuk mempelajari lebih lanjut tentang Formasi Danau dan cara menggunakannya dengan Athena Spark.

Langkah 1: Aktifkan Akses Meja Penuh di Formasi Danau

Untuk menggunakan mode Full Table Access (FTA), Anda harus mengizinkan Athena Spark mengakses data tanpa validasi tag sesi IAM. AWS Lake Formation Untuk mengaktifkan, ikuti langkah-langkah dalam Integr asi aplikasi untuk akses tabel penuh.

Langkah 1.1: Daftarkan lokasi data di Lake Formation menggunakan peran yang ditentukan pengguna

Anda harus menggunakan peran yang ditentukan pengguna untuk mendaftarkan lokasi data di AWS Lake Formation. Lihat Per syaratan untuk peran yang digunakan untuk mendaftarkan lokasi untuk detailnya.

Langkah 2: Siapkan izin IAM untuk peran eksekusi untuk sesi

Untuk akses baca atau tulis ke data yang mendasarinya, selain izin Lake Formation, peran eksekusi memerlukan izin lakeformation:GetDataAccess IAM. Dengan izin ini, Lake Formation memberikan permintaan kredenSIAL sementara untuk mengakses data.

Berikut ini adalah contoh kebijakan tentang cara memberikan izin IAM untuk mengakses skrip di Amazon S3, mengunggah log ke S3, izin AWS Glue API, dan izin untuk mengakses Lake Formation.

Langkah 2.1: Konfigurasikan izin Formasi Danau

  • Pekerjaan Spark yang membaca data dari S3 memerlukan SELECT izin Lake Formation.

  • Memicu pekerjaan yang write/delete data di S3 memerlukan ALL (SUPER) izin Formasi Danau.

  • Pekerjaan Spark yang berinteraksi dengan Katalog AWS Glue Data memerlukanDESCRIBE,ALTER, DROP izin yang sesuai.

Langkah 3: Inisialisasi sesi Spark untuk Akses Meja Penuh menggunakan Formasi Danau

Prasyarat

AWS Glue Katalog Data harus dikonfigurasi sebagai metastore untuk mengakses tabel Formasi Danau.

Tetapkan pengaturan berikut untuk mengonfigurasi AWS Glue katalog sebagai metastore:

{ "spark.hadoop.glue.catalogid": "ACCOUNT_ID", "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", "spark.hadoop.hive.metastore.glue.catalogid": "ACCOUNT_ID", "spark.sql.catalogImplementation": "hive" }

Untuk mengakses tabel yang terdaftar AWS Lake Formation, konfigurasi berikut perlu diatur selama inisialisasi Spark untuk mengonfigurasi Spark untuk menggunakan AWS Lake Formation kredenSIAL.

Hive

{ "spark.hadoop.fs.s3.credentialsResolverClass": "com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver", "spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject": "true", "spark.hadoop.fs.s3.folderObject.autoAction.disabled": "true", "spark.sql.catalog.skipLocationValidationOnCreateTable.enabled": "true", "spark.sql.catalog.createDirectoryAfterTable.enabled": "true", "spark.sql.catalog.dropDirectoryBeforeTable.enabled": "true" }

Gunung Es Apache

{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.iceberg.spark.SparkSessionCatalog", "spark.sql.catalog.spark_catalog.warehouse": "s3://your-bucket/warehouse/", "spark.sql.catalog.spark_catalog.client.region": "REGION", "spark.sql.catalog.spark_catalog.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.spark_catalog.glue.account-id": "ACCOUNT_ID", "spark.sql.catalog.spark_catalog.glue.lakeformation-enabled": "true" }

Tabel Amazon S3

{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.{catalogName}": "org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.{catalogName}.warehouse": "arn:aws:s3tables:{region}:{accountId}:bucket/{bucketName}", "spark.sql.catalog.{catalogName}.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog", "spark.sql.catalog.{catalogName}.glue.id": "{accountId}:s3tablescatalog/{bucketName}", "spark.sql.catalog.{catalogName}.glue.lakeformation-enabled": "true", "spark.sql.catalog.{catalogName}.client.region": "REGION", "spark.sql.catalog.{catalogName}.glue.account-id": "ACCOUNT_ID" }

Danau Delta

{ "spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension", "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.delta.catalog.DeltaCatalog", "spark.hadoop.fs.s3.credentialsResolverClass": "com.amazonaws.glue.accesscontrol.AWSLakeFormationCredentialResolver", "spark.hadoop.fs.s3.useDirectoryHeaderAsFolderObject": "true", "spark.hadoop.fs.s3.folderObject.autoAction.disabled": "true", "spark.sql.catalog.skipLocationValidationOnCreateTable.enabled": "true", "spark.sql.catalog.createDirectoryAfterTable.enabled": "true", "spark.sql.catalog.dropDirectoryBeforeTable.enabled": "true" }

Pertimbangan dan batasan

  • Akses Tabel Penuh didukung untuk tabel Hive, Iceberg, Amazon S3, dan tabel Delta. Tabel Hudi tidak mendukung akses tabel penuh.

  • Untuk menambahkan katalog baru ke sesi aktif gunakan spark.conf.set dengan konfigurasi katalog baru.

  • Konfigurasi katalog tidak dapat diubah. Jika Anda ingin memperbarui konfigurasi katalog, buat katalog baru menggunakanspark.conf.set.

  • Tambahkan hanya katalog yang Anda butuhkan ke sesi percikan.

  • Untuk mengubah katalog default: spark.catalog.setCurrentCatalog("s3tablesbucket")

  • Jika Anda memiliki karakter khusus dalam nama katalog Anda seperti-, hindari dalam kueri Anda seperti:

    SELECT sales_amount as nums FROM `my-s3-tables-bucket`.`s3namespace`.`daily_sales` LIMIT 100