Proyeksi partisi dengan Amazon Athena - Amazon Athena

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

Proyeksi partisi dengan Amazon Athena

Anda dapat menggunakan proyeksi partisi di Athena untuk mempercepat pemrosesan kueri tabel yang sangat dipartisi dan mengotomatiskan manajemen partisi.

Dalam proyeksi partisi, Athena menghitung nilai partisi dan lokasi menggunakan properti tabel yang Anda konfigurasikan langsung pada tabel Anda. AWS Glue Properti tabel memungkinkan Athena untuk 'memproyeksikan', atau menentukan, informasi partisi yang diperlukan alih-alih harus melakukan pencarian metadata yang lebih memakan waktu di. AWS Glue Data Catalog Karena operasi dalam memori sering lebih cepat daripada operasi jarak jauh, proyeksi partisi dapat mengurangi runtime kueri terhadap tabel yang sangat dipartisi. Tergantung pada karakteristik spesifik dari kueri dan data yang mendasari, partisi proyeksi dapat secara signifikan mengurangi permintaan runtime untuk mengkueri yang dibatasi pada partisi metadata pengambilan.

Pemangkasan dan proyeksi untuk tabel yang dipartisi berat

Pemangkasan partisi mengumpulkan metadata dan “plum” untuk hanya partisi yang berlaku untuk permintaan Anda. Ini sering mempercepat kueri. Athena menggunakan pemangkasan partisi untuk semua tabel dengan kolom partisi, termasuk tabel yang dikonfigurasi untuk proyeksi partisi.

Biasanya, saat memproses kueri, Athena menelepon sebelum melakukan pemangkasan AWS Glue Data Catalog partisi. GetPartitions Jika tabel memiliki sejumlah besar partisi, menggunakanGetPartitionsdapat mempengaruhi performa negatif. Untuk menghindarinya, Anda bisa menggunakan proyeksi partisi. Proyeksi partisi memungkinkan Athena untuk menghindari panggilanGetPartitionskarena konfigurasi proyeksi partisi memberikan Athena semua informasi yang diperlukan untuk membangun partisi itu sendiri.

Menggunakan proyeksi partisi

Untuk menggunakan proyeksi partisi, Anda menentukan rentang nilai partisi dan jenis proyeksi untuk setiap kolom partisi dalam properti tabel di AWS Glue Data Catalog atau di metastore Hive eksternal Anda. Properti kustom ini di atas tabel memungkinkan Athena untuk mengetahui pola partisi apa yang diharapkan saat menjalankan kueri di atas tabel. Selama eksekusi kueri, Athena menggunakan informasi ini untuk memproyeksikan nilai partisi alih-alih mengambilnya dari metastore Hive AWS Glue Data Catalog atau eksternal. Ini tidak hanya mengurangi waktu eksekusi kueri tetapi juga mengotomatiskan manajemen partisi karena menghilangkan kebutuhan untuk secara manual membuat partisi di Athena, AWS Glue, atau metastore Hive eksternal Anda.

penting

Mengaktifkan proyeksi partisi pada tabel menyebabkan Athena mengabaikan metadata partisi apa pun yang terdaftar ke tabel di metastore or Hive. AWS Glue Data Catalog

Kasus penggunaan

Skenario tempat proyeksi partisi berguna meliputi:

  • Kueri terhadap tabel yang sangat dipartisi tidak lengkap secepat yang Anda inginkan.

  • Anda secara teratur menambahkan partisi ke tabel sebagai partisi tanggal atau waktu baru dibuat dalam data Anda. Dengan proyeksi partisi, Anda mengonfigurasi rentang tanggal relatif yang dapat digunakan sebagai data baru tiba.

  • Anda memiliki data yang sangat dipartisi di Amazon S3. Data tidak praktis untuk dimodelkan di metastore Anda AWS Glue Data Catalog atau Hive, dan kueri Anda hanya membaca sebagian kecil saja.

Struktur partisi yang dapat diproyeksikan

Proyeksi partisi paling mudah dikonfigurasi saat partisi Anda mengikuti pola yang dapat diprediksi seperti, tetapi tidak terbatas pada, berikut:

  • Bilangan bulat— Setiap urutan kontinu bilangan bulat seperti[1, 2, 3, 4, ..., 1000]atau[0500, 0550, 0600, ..., 2500].

  • Tanggal— Setiap urutan kontinu tanggal atau datetime seperti[20200101, 20200102, ..., 20201231]atau[1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00].

  • Nilai yang disebutkan - Satu set terbatas dari nilai yang disebutkan seperti kode bandara atau. Wilayah AWS

  • Layanan AWS log — Layanan AWS log biasanya memiliki struktur yang diketahui yang skema partisinya dapat Anda tentukan AWS Glue dan karena itu Athena dapat digunakan untuk proyeksi partisi.

Menyesuaikan template jalur partisi

Secara default, Athena membangun lokasi partisi menggunakan formulirs3://DOC-EXAMPLE-BUCKET/<table-root>/partition-col-1=<partition-col-1-val>/partition-col-2=<partition-col-2-val>/, tetapi jika data Anda diatur secara berbeda, Athena menawarkan mekanisme untuk menyesuaikan templat jalur ini. Untuk langkah, lihat Menentukan lokasi penyimpanan S3 kustom.

Pertimbangan dan batasan

Pertimbangan berikut berlaku untuk instans Mac:

  • Proyeksi partisi menghilangkan kebutuhan untuk menentukan partisi secara manual di AWS Glue atau metastore Hive eksternal.

  • Saat Anda mengaktifkan proyeksi partisi di atas meja, Athena mengabaikan metadata partisi apa pun di metastore Hive atau eksternal AWS Glue Data Catalog untuk tabel itu.

  • Jika partisi yang diproyeksikan tidak ada di Amazon S3, Athena masih akan memproyeksikan partisi. Athena tidak membuang kesalahan, tapi tidak ada data dikembalikan. Namun, jika terlalu banyak partisi Anda kosong, kinerjanya bisa lebih lambat dibandingkan dengan AWS Glue partisi tradisional. Jika lebih dari separuh partisi yang diproyeksikan kosong, sebaiknya gunakan partisi tradisional.

  • Kueri untuk nilai-nilai yang berada di luar batas rentang yang ditetapkan untuk proyeksi partisi tidak mengembalikan kesalahan. Sebaliknya, kueri berjalan, tetapi kembali nol baris. Misalnya, jika Anda memiliki data terkait waktu yang dimulai pada tahun 2020 dan didefinisikan sebagai'projection.timestamp.range'='2020/01/01,NOW', kueri sepertiSELECT * FROM table-name WHERE timestamp = '2019/02/02'akan selesai dengan sukses, tapi kembali nol baris.

  • Proyeksi partisi hanya dapat digunakan jika tabel dipertanyakan melalui Athena. Jika tabel yang sama dibaca melalui layanan lain seperti Amazon Redshift Spectrum, Athena for Spark, atau Amazon EMR, metadata partisi standar digunakan.

  • Karena proyeksi partisi adalah fitur DML-only, SHOW PARTITIONS tidak mencantumkan partisi yang diproyeksikan oleh Athena tetapi tidak terdaftar dalam katalog atau metastore Hive eksternal. AWS Glue

  • Athena tidak menggunakan properti tabel tampilan sebagai konfigurasi untuk proyeksi partisi. Untuk mengatasi keterbatasan ini, mengonfigurasi dan mengaktifkan partisi proyeksi dalam tabel properti untuk tabel yang tampilan referensi.

  • Filter data Lake Formation tidak dapat digunakan dengan proyeksi partisi di mesin Athena versi 2.

Video

Video berikut menunjukkan bagaimana menggunakan proyeksi partisi untuk meningkatkan performa kueri Anda di Athena.