Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pekerjaan sarang
Anda dapat menjalankan pekerjaan Hive pada aplikasi dengan type
parameter yang disetel keHIVE
. Jobs harus kompatibel dengan versi Hive yang kompatibel dengan versi EMR rilis Amazon. Misalnya, ketika Anda menjalankan pekerjaan pada aplikasi dengan Amazon EMR rilis 6.6.0, pekerjaan Anda harus kompatibel dengan Apache Hive 3.1.2. Untuk informasi tentang versi aplikasi untuk setiap rilis, lihatEMRVersi rilis Amazon Tanpa Server.
Parameter pekerjaan sarang
Bila Anda menggunakan StartJobRun
APIuntuk menjalankan pekerjaan Hive, Anda harus menentukan parameter berikut.
Parameter yang diperlukan
Peran runtime pekerjaan sarang
Gunakan executionRoleArn
ARNuntuk menentukan IAM peran yang digunakan aplikasi Anda untuk menjalankan pekerjaan Hive. Peran ini harus berisi izin berikut:
-
Baca dari bucket S3 atau sumber data lain di mana data Anda berada
-
Baca dari bucket atau awalan S3 tempat file kueri Hive dan file kueri init Anda berada
-
Baca dan tulis ke bucket S3 tempat direktori Hive Scratch dan direktori gudang Hive Metastore Anda berada
-
Menulis ke ember S3 di mana Anda ingin menulis hasil akhir Anda
-
Menulis log ke bucket S3 atau awalan yang menentukan
S3MonitoringConfiguration
-
Akses ke KMS kunci jika Anda menggunakan KMS kunci untuk mengenkripsi data di bucket S3 Anda
-
Akses ke Katalog Data AWS Glue
Jika pekerjaan Hive Anda membaca atau menulis data ke atau dari sumber data lain, tentukan izin yang sesuai dalam peran iniIAM. Jika Anda tidak memberikan izin ini untuk IAM peran tersebut, pekerjaan Anda mungkin gagal. Untuk informasi selengkapnya, lihat Peran runtime Job untuk Amazon Serverless EMR.
Parameter pengemudi pekerjaan sarang
Gunakan jobDriver
untuk memberikan masukan pada pekerjaan. Parameter driver pekerjaan hanya menerima satu nilai untuk jenis pekerjaan yang ingin Anda jalankan. Saat Anda menentukan hive
sebagai jenis pekerjaan, EMR Tanpa Server meneruskan kueri Hive ke parameter. jobDriver
Pekerjaan sarang memiliki parameter berikut:
-
query
— Ini adalah referensi di Amazon S3 ke file kueri Hive yang ingin Anda jalankan. -
parameters
— Ini adalah properti konfigurasi Hive tambahan yang ingin Anda timpa. Untuk mengganti properti, teruskan ke parameter ini sebagai--hiveconf
. Untuk mengganti variabel, berikan mereka ke parameter ini sebagaiproperty=value
--hivevar
.key=value
-
initQueryFile
- Ini adalah file query init Hive. Hive menjalankan file ini sebelum kueri Anda dan dapat menggunakannya untuk menginisialisasi tabel.
Parameter penggantian konfigurasi sarang
Gunakan configurationOverrides
untuk mengganti properti konfigurasi tingkat pemantauan dan tingkat aplikasi. Parameter ini menerima JSON objek dengan dua bidang berikut:
-
monitoringConfiguration
— Gunakan bidang ini untuk menentukan Amazon S3 URL (s3MonitoringConfiguration
) tempat Anda ingin pekerjaan EMR Tanpa Server menyimpan log pekerjaan Hive Anda. Pastikan Anda membuat bucket ini dengan yang sama Akun AWS yang meng-host aplikasi Anda, dan di tempat yang sama Wilayah AWS di mana pekerjaan Anda berjalan. -
applicationConfiguration
— Anda dapat memberikan objek konfigurasi di bidang ini untuk mengganti konfigurasi default untuk aplikasi. Anda dapat menggunakan sintaks singkatan untuk menyediakan konfigurasi, atau Anda dapat mereferensikan objek konfigurasi dalam file. JSON Objek konfigurasi terdiri dari klasifikasi, properti, dan konfigurasi bersarang opsional. Properti terdiri dari pengaturan yang ingin Anda timpa dalam file itu. Anda dapat menentukan beberapa klasifikasi untuk beberapa aplikasi dalam satu JSON objek.catatan
Klasifikasi konfigurasi yang tersedia bervariasi menurut rilis Tanpa EMR Server tertentu. Misalnya, klasifikasi untuk Log4j kustom
spark-driver-log4j2
dan hanyaspark-executor-log4j2
tersedia dengan rilis 6.8.0 dan yang lebih tinggi.
Jika Anda melewati konfigurasi yang sama dalam penggantian aplikasi dan dalam parameter Hive, parameter Hive akan diprioritaskan. Daftar berikut memberi peringkat konfigurasi dari prioritas tertinggi hingga prioritas terendah.
-
Konfigurasi yang Anda berikan sebagai bagian dari parameter Hive.
--hiveconf
property=value
-
Konfigurasi yang Anda berikan sebagai bagian dari penggantian aplikasi Anda ketika Anda memulai pekerjaan.
-
Konfigurasi yang Anda berikan sebagai bagian dari
runtimeConfiguration
saat Anda membuat aplikasi. -
Konfigurasi yang dioptimalkan yang EMR ditetapkan Amazon untuk rilis.
-
Konfigurasi sumber terbuka default untuk aplikasi.
Untuk informasi selengkapnya tentang mendeklarasikan konfigurasi di tingkat aplikasi, dan mengganti konfigurasi selama menjalankan pekerjaan, lihat. Konfigurasi aplikasi default untuk Tanpa EMR Server
Properti pekerjaan sarang
Tabel berikut mencantumkan properti wajib yang harus Anda konfigurasikan saat mengirimkan pekerjaan Hive.
Pengaturan | Deskripsi |
---|---|
hive.exec.scratchdir |
Lokasi Amazon S3 tempat EMR Tanpa Server membuat file sementara selama eksekusi pekerjaan Hive. |
hive.metastore.warehouse.dir |
Lokasi Amazon S3 database untuk tabel terkelola di Hive. |
Tabel berikut mencantumkan properti Hive opsional dan nilai defaultnya yang dapat Anda ganti saat mengirimkan pekerjaan Hive.
Pengaturan | Deskripsi | Nilai default |
---|---|---|
fs.s3.customAWSCredentialsProvider |
Penyedia AWS Credentials yang ingin Anda gunakan. | com.amazonaws.auth.d efaultAWSCredentials ProviderChain |
fs.s3a.aws.credentials.provider |
Penyedia AWS Credentials yang ingin Anda gunakan dengan sistem file S3A. | com.amazonaws.auth.d efaultAWSCredentials ProviderChain |
hive.auto.convert.join |
Opsi yang mengaktifkan konversi otomatis gabungan umum menjadi mapjoins, berdasarkan ukuran file input. | TRUE |
hive.auto.convert.join.noconditionaltask |
Opsi yang mengaktifkan pengoptimalan saat Hive mengonversi gabungan umum menjadi mapjoin berdasarkan ukuran file input. | TRUE |
hive.auto.convert.join.noconditionaltask.size |
Gabungan mengonversi langsung ke mapjoin di bawah ukuran ini. | Nilai optimal dihitung berdasarkan memori tugas Tez |
hive.cbo.enable |
Opsi yang mengaktifkan pengoptimalan berbasis biaya dengan kerangka Calcite. | TRUE |
hive.cli.tez.session.async |
Opsi untuk memulai sesi Tez latar belakang saat kueri Hive Anda dikompilasi. Saat disetel kefalse , Tez AM diluncurkan setelah kueri Hive Anda dikompilasi. |
TRUE |
hive.compute.query.using.stats |
Opsi yang mengaktifkan Hive untuk menjawab pertanyaan tertentu dengan statistik yang disimpan di metastore. Untuk statistik dasar, atur hive.stats.autogather keTRUE . Untuk koleksi kueri yang lebih canggih, jalankananalyze
table queries . |
TRUE |
hive.default.fileformat |
Format file default untuk CREATE TABLE pernyataan. Anda dapat secara eksplisit mengganti ini jika Anda menentukan STORED AS [FORMAT] dalam perintah Anda. CREATE TABLE |
TEXTFILE |
hive.driver.cores |
Jumlah core yang digunakan untuk proses driver Hive. | 2 |
hive.driver.disk |
Ukuran disk untuk driver Hive. | 20G |
hive.driver.disk.type |
Jenis disk untuk driver Hive. | Standar |
hive.tez.disk.type |
Ukuran disk untuk pekerja tez. | Standar |
hive.driver.memory |
Jumlah memori yang digunakan per proses driver Hive. Master Aplikasi Hive CLI dan Tez berbagi memori ini secara setara dengan 20% ruang kepala. | 6G |
hive.emr-serverless.launch.env.[ |
Opsi untuk mengatur variabel lingkungan di semua proses khusus HIVE, seperti driver Hive Anda, Tez AM, dan tugas Tez. |
|
hive.exec.dynamic.partition |
Opsi yang mengaktifkan partisi dinamis diDML/DDL. | TRUE |
hive.exec.dynamic.partition.mode |
Opsi yang menentukan apakah Anda ingin menggunakan modus ketat atau modus non-ketat. Dalam mode ketat, Anda harus menentukan setidaknya satu partisi statis jika Anda secara tidak sengaja menimpa semua partisi. Dalam mode non-ketat, semua partisi dibiarkan dinamis. | strict |
hive.exec.max.dynamic.partitions |
Jumlah maksimum partisi dinamis yang dibuat Hive secara total. | 1000 |
hive.exec.max.dynamic.partitions.pernode |
Jumlah maksimum partisi dinamis yang dibuat Hive di setiap node mapper dan reducer. | 100 |
hive.exec.orc.split.strategy |
Mengharapkan salah satu nilai berikut:BI ,ETL , atauHYBRID . Ini bukan konfigurasi tingkat pengguna. BI menentukan bahwa Anda ingin menghabiskan lebih sedikit waktu dalam pembuatan terpisah dibandingkan dengan eksekusi kueri. ETL menentukan bahwa Anda ingin menghabiskan lebih banyak waktu dalam generasi terpisah. HYBRID menentukan pilihan strategi di atas berdasarkan heuristik. |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
Ukuran per peredam. Defaultnya adalah 256 MB. Jika ukuran input 1G, pekerjaan menggunakan 4 reduksi. | 256000000 |
hive.exec.reducers.max |
Jumlah maksimum reduksi. | 256 |
hive.exec.stagingdir |
Nama direktori yang menyimpan file sementara yang Hive buat di dalam lokasi tabel dan di lokasi direktori awal yang ditentukan dalam hive.exec.scratchdir properti. |
.hive-staging |
hive.fetch.task.conversion |
Mengharapkan salah satu nilai berikut:NONE ,MINIMAL , atauMORE . Hive dapat mengonversi kueri pilih menjadi satu FETCH tugas. Ini meminimalkan latensi. |
MORE |
hive.groupby.position.alias |
Opsi yang menyebabkan Hive menggunakan alias posisi kolom dalam GROUP BY pernyataan. |
FALSE |
hive.input.format |
Format input default. Atur ke HiveInputFormat jika Anda mengalami masalah denganCombineHiveInputFormat . |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Opsi yang mengaktifkan penjelasan output diperpanjang untuk kueri apa pun di log Hive Anda. | FALSE |
hive.log.level |
Level penebangan sarang. | INFO |
hive.mapred.reduce.tasks.speculative.execution |
Opsi yang mengaktifkan peluncuran spekulatif untuk reduksi. Hanya didukung dengan Amazon EMR 6.10.x dan yang lebih rendah. | TRUE |
hive.max-task-containers |
Jumlah maksimum kontainer bersamaan. Memori mapper yang dikonfigurasi dikalikan dengan nilai ini untuk menentukan memori yang tersedia yang membagi komputasi dan penggunaan preemption tugas. | 1000 |
hive.merge.mapfiles |
Opsi yang menyebabkan file kecil bergabung di akhir pekerjaan khusus peta. | TRUE |
hive.merge.size.per.task |
Ukuran file gabungan di akhir pekerjaan. | 256000000 |
hive.merge.tezfiles |
Opsi yang mengaktifkan penggabungan file kecil di akhir DAG Tez. | FALSE |
hive.metastore.client.factory.class |
Nama kelas pabrik yang menghasilkan objek yang mengimplementasikan IMetaStoreClient antarmuka. |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
Jika Katalog Data AWS Glue bertindak sebagai metastore tetapi berjalan di tempat yang berbeda Akun AWS dari pekerjaan, ID Akun AWS tempat pekerjaan berjalan. | NULL |
hive.metastore.uris |
Penghematan URI yang digunakan klien metastore untuk terhubung ke metastore jarak jauh. | NULL |
hive.optimize.ppd |
Opsi yang menyalakan predikat pushdown. | TRUE |
hive.optimize.ppd.storage |
Opsi yang mengaktifkan predikat pushdown ke penangan penyimpanan. | TRUE |
hive.orderby.position.alias |
Opsi yang menyebabkan Hive menggunakan alias posisi kolom dalam ORDER BY pernyataan. |
TRUE |
hive.prewarm.enabled |
Opsi yang menyalakan wadah prewarm untuk Tez. | FALSE |
hive.prewarm.numcontainers |
Jumlah wadah untuk pra-hangat untuk Tez. | 10 |
hive.stats.autogather |
Opsi yang menyebabkan Hive mengumpulkan statistik dasar secara otomatis selama INSERT OVERWRITE perintah. |
TRUE |
hive.stats.fetch.column.stats |
Opsi yang mematikan pengambilan statistik kolom dari metastore. Pengambilan statistik kolom bisa mahal ketika jumlah kolom tinggi. | FALSE |
hive.stats.gather.num.threads |
Jumlah utas yang digunakan partialscan dan noscan menganalisis perintah untuk tabel yang dipartisi. Ini hanya berlaku untuk format file yang mengimplementasikan StatsProvidingRecordReader (likeORC). |
10 |
hive.strict.checks.cartesian.product |
Opsi yang mengaktifkan pemeriksaan gabungan Cartesian yang ketat. Pemeriksaan ini melarang produk Cartesian (gabungan silang). | FALSE |
hive.strict.checks.type.safety |
Opsi yang mengaktifkan pemeriksaan keamanan tipe ketat dan mematikan perbandingan bigint dengan keduanya string dandouble . |
TRUE |
hive.support.quoted.identifiers |
Mengharapkan nilai NONE atauCOLUMN . NONE menyiratkan hanya karakter alfanumerik dan garis bawah yang valid dalam pengidentifikasi. COLUMN menyiratkan nama kolom dapat berisi karakter apa pun. |
COLUMN |
hive.tez.auto.reducer.parallelism |
Opsi yang mengaktifkan fitur paralelisme peredam otomatis Tez. Hive masih memperkirakan ukuran data dan menetapkan perkiraan paralelisme. Tez mengambil sampel ukuran keluaran simpul sumber dan menyesuaikan perkiraan saat runtime seperlunya. | TRUE |
hive.tez.container.size |
Jumlah memori yang digunakan per proses tugas Tez. | 6144 |
hive.tez.cpu.vcores |
Jumlah core yang digunakan untuk setiap tugas Tez. | 2 |
hive.tez.disk.size |
Ukuran disk untuk setiap wadah tugas. | 20G |
hive.tez.input.format |
Format input untuk generasi split di Tez AM. | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
Batas bawah reduksi yang ditentukan Tez saat Anda mengaktifkan paralelisme peredam otomatis. | 0,25 |
hive.vectorized.execution.enabled |
Opsi yang mengaktifkan mode vektor eksekusi kueri. | TRUE |
hive.vectorized.execution.reduce.enabled |
Opsi yang mengaktifkan mode vektor dari sisi pengurangan eksekusi kueri. | TRUE |
javax.jdo.option.ConnectionDriverName |
Nama kelas pengemudi untuk JDBC metastore. | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
Kata sandi yang terkait dengan database metastore. | NULL |
javax.jdo.option.ConnectionURL |
String JDBC penghubung untuk JDBC metastore. | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
Nama pengguna yang terkait dengan database metastore. | NULL |
mapreduce.input.fileinputformat.split.maxsize |
Ukuran maksimum split selama komputasi split saat format input Anda. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat Nilai 0 menunjukkan tidak ada batas. |
0 |
tez.am.dag.cleanup.on.completion |
Opsi yang mengaktifkan pembersihan data acak saat DAG selesai. | TRUE |
tez.am.emr-serverless.launch.env.[ |
Pilihan untuk mengatur variabel lingkungan dalam proses Tez AM. Untuk Tez AM, nilai ini mengesampingkan nilainya. hive.emr-serverless.launch.env.[ |
|
tez.am.log.level |
Level pencatatan root yang diteruskan EMR Tanpa Server ke master aplikasi Tez. | INFO |
tez.am.sleep.time.before.exit.millis |
EMRTanpa server harus mendorong ATS peristiwa setelah periode waktu ini setelah permintaan shutdown AM. | 0 |
tez.am.speculation.enabled |
Opsi yang menyebabkan peluncuran spekulatif tugas yang lebih lambat. Ini dapat membantu mengurangi latensi pekerjaan ketika beberapa tugas berjalan lebih lambat karena mesin yang buruk atau lambat. Hanya didukung dengan Amazon EMR 6.10.x dan yang lebih rendah. | FALSE |
tez.am.task.max.failed.attempts |
Jumlah maksimum upaya yang dapat gagal untuk tugas tertentu sebelum tugas gagal. Nomor ini tidak menghitung upaya yang dihentikan secara manual. | 3 |
tez.am.vertex.cleanup.height |
Jarak di mana, jika semua simpul dependen selesai, Tez AM akan menghapus data vertex shuffle. Fitur ini dimatikan ketika nilainya 0. Amazon EMR versi 6.8.0 dan yang lebih baru mendukung fitur ini. | 0 |
tez.client.asynchronous-stop |
Opsi yang menyebabkan EMR Serverless mendorong ATS peristiwa sebelum mengakhiri driver Hive. | FALSE |
tez.grouping.max-size |
Batas ukuran atas (dalam byte) dari pemisahan yang dikelompokkan. Batas ini mencegah perpecahan yang terlalu besar. | 1073741824 |
tez.grouping.min-size |
Batas ukuran yang lebih rendah (dalam byte) dari pemisahan yang dikelompokkan. Batas ini mencegah terlalu banyak perpecahan kecil. | 16777216 |
tez.runtime.io.sort.mb |
Ukuran buffer lunak saat Tez mengurutkan output diurutkan. | Nilai optimal dihitung berdasarkan memori tugas Tez |
tez.runtime.unordered.output.buffer.size-mb |
Ukuran buffer yang akan digunakan jika Tez tidak menulis langsung ke disk. | Nilai optimal dihitung berdasarkan memori tugas Tez |
tez.shuffle-vertex-manager.max-src-fraction |
Fraksi tugas sumber yang harus diselesaikan sebelum EMR Tanpa Server menjadwalkan semua tugas untuk simpul saat ini (dalam kasus koneksi). ScatterGather Jumlah tugas yang siap untuk penjadwalan pada skala simpul saat ini secara linier antara dan. min-fraction max-fraction Ini default nilai default atautez.shuffle-vertex-manager.min-src-fraction , mana yang lebih besar. |
0,75 |
tez.shuffle-vertex-manager.min-src-fraction |
Fraksi tugas sumber yang harus diselesaikan sebelum EMR Serverless menjadwalkan tugas untuk simpul saat ini (dalam kasus koneksi). ScatterGather |
0,25 |
tez.task.emr-serverless.launch.env.[ |
Opsi untuk mengatur variabel lingkungan dalam proses tugas Tez. Untuk tugas Tez, nilai ini mengesampingkan nilainya. hive.emr-serverless.launch.env.[ |
|
tez.task.log.level |
Level logging root yang EMR diserahkan Tanpa Server ke tugas Tez. | INFO |
tez.yarn.ats.event.flush.timeout.millis |
Jumlah maksimum waktu AM harus menunggu acara dibilas sebelum dimatikan. | 300000 |
Contoh pekerjaan sarang
Contoh kode berikut menunjukkan bagaimana menjalankan query Hive dengan. StartJobRun
API
aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-role-arn
\ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'
Anda dapat menemukan contoh tambahan tentang cara menjalankan pekerjaan Hive di repositori Sampel EMRTanpa Server