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
SELECTizin 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 memerlukan
DESCRIBE,ALTER,DROPizin 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.setdengan konfigurasi katalog baru. -
Konfigurasi katalog tidak dapat diubah. Jika Anda ingin memperbarui konfigurasi katalog, buat katalog baru menggunakan
spark.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