JindoTable menggunakan engine native untuk mempercepat kueri pada file ORC atau Parquet di Spark, Hive, atau Presto. Topik ini menjelaskan cara mengaktifkan akselerasi kueri native guna meningkatkan performa Spark, Hive, dan Presto.
Prasyarat
Anda harus memiliki kluster E-MapReduce dengan file ORC atau Parquet yang disimpan di JindoFS atau OSS. Untuk informasi lebih lanjut, lihat Create a cluster.
Batasan
-
File tipe Binary tidak dapat dipercepat.
-
Tabel terpartisi tidak didukung jika nilai kolom kunci partisinya disimpan dalam file data.
-
Kluster E-MapReduce versi EMR-5.X dan yang lebih baru tidak didukung.
-
Penggunaan
spark.read.schema(userDefinedSchema)tidak didukung. -
Tipe Date hanya didukung dalam rentang 1400-01-01 hingga 9999-12-31.
-
Tabel yang berisi nama kolom yang hanya berbeda dalam kapitalisasi (misalnya,
NAMEdanname) tidak didukung. Nama kolom diperlakukan secara case-insensitive selama akselerasi kueri native. -
Engine dan format penyimpanan yang didukung untuk Spark, Hive, dan Presto adalah sebagai berikut.
Engine
ORC
Parquet
Spark2
Supported
Supported
Spark3
Supported
Supported
Presto
Supported
Supported
Hive2
Not supported
Supported
Hive3
Not supported
Supported
-
Engine dan sistem file penyimpanan yang didukung untuk Spark, Hive, dan Presto adalah sebagai berikut.
Engine
OSS
JindoFS
HDFS
Spark2
Supported
Supported
Supported
Presto
Supported
Supported
Supported
Hive2
Supported
Supported
Not supported
Hive3
Supported
Supported
Not supported
Tingkatkan performa Spark
-
Aktifkan akselerasi ORC atau Parquet JindoTable.
Catatan-
Akselerasi kueri native menggunakan memori off-heap. Kami menyarankan menambahkan konfigurasi
--conf spark.executor.memoryOverhead=4gke job Spark Anda untuk mengalokasikan sumber daya tambahan bagi akselerasi. -
Untuk membaca file ORC atau Parquet di Spark, Anda harus menggunakan DataFrame API atau Spark SQL.
-
Pengaturan global
-
Buka halaman detail kluster.
-
Masuk ke E-MapReduce console.
-
Di bilah navigasi atas, pilih wilayah dan kelompok sumber daya sesuai kebutuhan.
-
Klik tab Clusters.
-
Pada halaman Clusters, temukan kluster tersebut lalu klik Details di kolom Actions.
-
-
Ubah konfigurasi.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada halaman layanan Spark, klik tab Configure.
-
Di kotak pencarian, cari parameter spark.sql.extensions dan atur nilainya menjadi io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension.
-
-
Simpan konfigurasi.
-
Klik Save.
-
Pada kotak dialog Confirm, masukkan Execution Reason lalu klik OK.
-
-
Restart ThriftServer.
-
Di pojok kanan atas, pilih .
-
Pada kotak dialog Cluster Activities, masukkan Execution Reason lalu klik OK.
-
Pada kotak dialog Confirm, klik OK.
-
-
-
Pengaturan tingkat job
Saat menjalankan spark-shell atau spark-sql, tambahkan parameter startup Spark berikut:
--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtensionUntuk informasi lebih lanjut tentang job, lihat Configure a Spark Shell job atau Configure a Spark SQL job.
-
-
Verifikasi bahwa akselerasi telah diaktifkan.
-
Masuk ke UI Spark History Server.
-
Di halaman SQL pada Spark UI, lihat job eksekusi.
Jika
JindoDataSourceV2Scanmuncul, berarti akselerasi telah diaktifkan. Jika tidak, periksa konfigurasi di Langkah 1. Pada halaman Details for Query 10, Directed Acyclic Graph (DAG) menampilkan rencana eksekusi. Sebagai contoh, JindoDataSourceV2Scan dapat memindai data sebesar 15,6 GB (sekitar 14 miliar baris), yang kemudian difilter menjadi 2,7 miliar baris. Operasi akhir HashAggregate menghasilkan 4.722 baris, dan total kueri memerlukan waktu 2,3 menit.
-
Tingkatkan performa Presto
Kueri Presto memiliki konkurensi tinggi, dan akselerasi kueri native menggunakan memori off-heap. Oleh karena itu, Anda harus mengalokasikan lebih dari 10 GB memori untuk akselerasi kueri.
Presto memiliki katalog bawaan untuk akselerasi native JindoTable bernama hive-acc. Anda dapat menggunakan katalog hive-acc untuk mengaktifkan akselerasi kueri native.
Contoh:
presto --server emr-header-1:9090 --catalog hive-acc --schema default
Akselerasi kueri native untuk Presto saat ini tidak mendukung pembacaan tipe data kompleks seperti Map, Struct, atau Array.
Tingkatkan performa Hive
Jika stabilitas job yang ketat diperlukan, kami menyarankan untuk tidak mengaktifkan akselerasi kueri native.
Anda dapat meningkatkan performa Hive dengan salah satu cara berikut:
-
Gunakan konsol
Di konsol, buka halaman Configure layanan Hive. Cari parameter kustom hive.jindotable.native.enabled dan atur nilainya menjadi true. Simpan konfigurasi dan restart layanan agar perubahan diterapkan. Metode ini berlaku untuk Hive on MR maupun Hive on Tez.
-
Gunakan CLI
Di CLI, atur
hive.jindotable.native.enabledmenjaditrueuntuk mengaktifkan akselerasi kueri native. Karena E-MapReduce V3.35.0 dan yang lebih baru sudah menyertakan plug-in akselerasi Parquet JindoTable, Anda dapat langsung mengatur parameter ini.set hive.jindotable.native.enabled=true;
Akselerasi kueri native untuk Hive saat ini tidak mendukung pembacaan tipe data kompleks seperti Map, Struct, atau Array.