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 Formation
SELECT. -
Memicu pekerjaan yang write/delete data di S3 memerlukan izin Lake Formation
ALL (SUPER). -
Memicu pekerjaan yang berinteraksi dengan katalog AWS Glue Data memerlukan
DESCRIBE,ALTER,DROPizin 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.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
-kemudian melarikan diri dalam kueri Anda seperti:SELECT sales_amount as nums FROM `my-s3-tables-bucket`.`s3namespace`.`daily_sales` LIMIT 100