View a markdown version of this page

Menggunakan Lake Formation 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 Lake Formation 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 lengkap. Kemampuan ini memungkinkan Anda membaca dan menulis ke tabel yang dilindungi oleh Lake Formation dari sesi interaktif Athena Spark Anda. Lihat bagian berikut untuk mempelajari lebih lanjut tentang Lake Formation dan cara menggunakannya dengan Athena Spark.

Langkah 1: Aktifkan Akses Tabel Penuh di Lake Formation

Untuk menggunakan mode Akses Tabel Penuh (FTA), Anda harus mengizinkan Athena Spark untuk mengakses data tanpa validasi tag sesi IAM di. AWS Lake Formation Untuk mengaktifkan, ikuti langkah-langkah dalam Integrasi 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 Persyaratan 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 dasar, selain izin Lake Formation, peran eksekusi memerlukan izin lakeformation:GetDataAccess IAM. Dengan izin ini, Lake Formation memberikan permintaan kredensi 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 API AWS Glue , dan izin untuk mengakses Lake Formation.

Langkah 2.1: Konfigurasikan izin Lake Formation

  • Pekerjaan percikan yang membaca data dari S3 memerlukan izin Lake FormationSELECT.

  • Memicu pekerjaan yang write/delete data di S3 memerlukan izin Lake FormationALL (SUPER).

  • Memicu pekerjaan yang berinteraksi dengan katalog AWS Glue Data memerlukanDESCRIBE,ALTER, DROP izin yang sesuai.

Langkah 3: Inisialisasi sesi Spark untuk Akses Tabel Penuh menggunakan Lake Formation

Prasyarat

AWS Glue Katalog Data harus dikonfigurasi sebagai metastore untuk mengakses tabel Lake Formation.

Setel 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 disetel selama inisialisasi Spark untuk mengonfigurasi Spark agar menggunakan kredensional. AWS Lake Formation

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 Delta Tables. 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 - kemudian melarikan diri dalam kueri Anda seperti:

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