全部产品
Search
文档中心

E-MapReduce:Mengelola Sesi Spark Thrift Server

更新时间:Jul 12, 2025

Spark Thrift Server adalah layanan yang disediakan oleh Apache Spark untuk mendukung eksekusi kueri SQL melalui koneksi JDBC atau ODBC, memudahkan integrasi lingkungan Spark dengan alat Business Intelligence (BI), visualisasi data, dan alat analisis lainnya. Topik ini menjelaskan cara membuat dan terhubung ke Spark Thrift Server.

Prasyarat

Sebuah workspace telah dibuat. Untuk informasi lebih lanjut, lihat Mengelola Workspaces.

Buat sesi Spark Thrift Server

Setelah membuat Spark Thrift Server, Anda dapat memilih sesi ini saat membuat tugas Spark SQL.

  1. Buka halaman Sessions.

    1. Masuk ke Konsol EMR.

    2. Di panel navigasi sisi kiri, pilih EMR Serverless > Spark.

    3. Di halaman Spark, klik nama workspace yang ingin dikelola.

    4. Di panel navigasi sebelah kiri halaman EMR Serverless Spark, pilih Operation Center > Sessions.

  2. Di halaman Session Manager, klik tab Spark Thrift Server Sessions.

  3. Klik Create Spark Thrift Server Session.

  4. Di halaman Create Spark Thrift Server Session, konfigurasikan parameter dan klik Create.

    Parameter

    Deskripsi

    Name

    Nama Spark Thrift Server baru.

    Nama harus memiliki panjang 1 hingga 64 karakter dan dapat berisi huruf, angka, tanda hubung (-), garis bawah (_), dan spasi.

    Deployment Queue

    Pilih antrian pengembangan yang sesuai untuk menerapkan sesi. Anda hanya dapat memilih antrian pengembangan atau antrian yang dibagi oleh lingkungan pengembangan dan produksi.

    Untuk informasi lebih lanjut tentang antrian, lihat Manajemen Antrian Sumber Daya.

    Engine Version

    Versi engine yang digunakan oleh sesi saat ini. Untuk informasi lebih lanjut tentang versi engine, lihat Pengenalan Versi Engine.

    Use Fusion Acceleration

    Fusion dapat mempercepat pelaksanaan beban kerja Spark dan mengurangi total biaya tugas. Untuk informasi penagihan, lihat Penagihan. Untuk informasi lebih lanjut tentang engine Fusion, lihat Engine Fusion.

    Auto Stop

    Fitur ini diaktifkan secara default. Sesi Spark Thrift Server akan berhenti secara otomatis setelah 45 menit tidak aktif.

    Network Connectivity

    Spark Thrift Server Port

    Nomor port adalah 443 saat Anda mengakses server menggunakan titik akhir publik, dan 80 saat Anda mengakses server menggunakan titik akhir internal wilayah yang sama.

    Access Credential

    Hanya metode Token yang didukung.

    spark.driver.cores

    Jumlah core CPU yang digunakan oleh proses Driver dalam aplikasi Spark. Nilai default adalah 1 CPU.

    spark.driver.memory

    Jumlah memori yang dapat digunakan oleh proses Driver dalam aplikasi Spark. Nilai default adalah 3,5 GB.

    spark.executor.cores

    Jumlah core CPU yang dapat digunakan oleh setiap proses Executor. Nilai default adalah 1 CPU.

    spark.executor.memory

    Jumlah memori yang dapat digunakan oleh setiap proses Executor. Nilai default adalah 3,5 GB.

    spark.executor.instances

    Jumlah executor yang dialokasikan oleh Spark. Nilai default adalah 2.

    Dynamic Resource Allocation

    Secara default, fitur ini dinonaktifkan. Setelah Anda mengaktifkan fitur ini, Anda harus mengonfigurasi parameter berikut:

    • Minimum Number of Executors: Nilai default: 2.

    • Maximum Number of Executors: Jika Anda tidak mengonfigurasi parameter spark.executor.instances, nilai default 10 digunakan.

    More Memory Configurations

    • spark.driver.memoryOverhead: ukuran memori non-heap yang tersedia untuk setiap driver. Jika Anda membiarkan parameter ini kosong, Spark secara otomatis memberikan nilai ke parameter ini berdasarkan rumus berikut: max(384 MB, 10% × spark.driver.memory).

    • spark.executor.memoryOverhead: ukuran memori non-heap yang tersedia untuk setiap executor. Jika Anda membiarkan parameter ini kosong, Spark secara otomatis memberikan nilai ke parameter ini berdasarkan rumus berikut: max(384 MB, 10% × spark.executor.memory).

    • spark.memory.offHeap.size: ukuran memori off-heap yang tersedia untuk aplikasi Spark. Nilai default: 1 GB.

      Parameter ini hanya valid jika Anda mengatur parameter spark.memory.offHeap.enabled ke true. Secara default, jika Anda menggunakan engine Fusion, parameter spark.memory.offHeap.enabled diatur ke true dan parameter spark.memory.offHeap.size diatur ke 1 GB.

    Spark Configuration

    Masukkan informasi konfigurasi Spark. Secara default, parameter dipisahkan oleh spasi, misalnya, spark.sql.catalog.paimon.metastore dlf.

  5. Dapatkan informasi Endpoint.

    1. Di tab Spark Thrift Server Sessions, klik nama Spark Thrift Server baru.

    2. Di tab Overview, salin informasi Endpoint.

      Berdasarkan lingkungan jaringan Anda, Anda dapat memilih salah satu dari Endpoint berikut:

      • Endpoint Publik: Cocok untuk skenario di mana Anda perlu mengakses EMR Serverless Spark melalui Internet, seperti dari mesin pengembangan lokal, jaringan eksternal, atau lingkungan lintas-cloud. Metode ini mungkin menimbulkan biaya lalu lintas. Pastikan Anda mengambil langkah-langkah keamanan yang diperlukan.

      • Endpoint Internal Wilayah yang Sama: Cocok untuk skenario di mana instance ECS Alibaba Cloud di wilayah yang sama mengakses EMR Serverless Spark melalui jaringan internal. Akses jaringan internal gratis dan lebih aman, tetapi terbatas pada lingkungan jaringan internal Alibaba Cloud di wilayah yang sama.

Buat Token

  1. Di tab Spark Thrift Server Sessions, klik nama sesi Spark Thrift Server baru.

  2. Klik tab Token Management.

  3. Klik Create Token.

  4. Di kotak dialog Create Token, konfigurasikan parameter dan klik OK.

    Parameter

    Deskripsi

    Name

    Nama token baru.

    Expiration Time

    Waktu kedaluwarsa token. Jumlah hari harus lebih besar dari atau sama dengan 1. Fitur ini diaktifkan secara default, dan token kedaluwarsa setelah 365 hari.

  5. Salin informasi token.

    Penting

    Setelah token dibuat, Anda harus segera menyalin informasi token baru. Informasi token tidak dapat dilihat lagi setelah ditutup. Jika token kedaluwarsa atau hilang, Anda dapat membuat token baru atau mengatur ulang token.

Terhubung ke Spark Thrift Server

Saat terhubung ke Spark Thrift Server, ganti informasi berikut sesuai dengan situasi Anda:

  • <endpoint>: Informasi Endpoint(Public) atau Endpoint(Internal) yang Anda dapatkan di tab Overview.

    Jika menggunakan endpoint internal wilayah yang sama, akses ke Spark Thrift Server dibatasi untuk sumber daya dalam VPC yang sama.

  • <port>: Nomor port. Nomor port adalah 443 saat menggunakan endpoint publik, dan 80 saat menggunakan endpoint internal wilayah yang sama.

  • <username>: Nama token yang Anda buat di tab Token Management.

  • <token>: Informasi token yang Anda salin di tab Token Management.

Terhubung ke Spark Thrift Server menggunakan Python

  1. Jalankan perintah berikut untuk menginstal paket PyHive dan Thrift:

    pip install pyhive thrift
  2. Tulis skrip Python untuk terhubung ke Spark Thrift Server.

    Berikut adalah contoh skrip Python yang menunjukkan cara terhubung ke Hive dan menampilkan daftar database. Pilih metode koneksi yang sesuai berdasarkan lingkungan jaringan Anda (publik atau internal).

    Terhubung menggunakan endpoint publik

    from pyhive import hive
    
    if __name__ == '__main__':
        # Ganti <endpoint>, <username>, dan <token> dengan informasi aktual Anda.
        cursor = hive.connect('<endpoint>', port=443, scheme='https', username='<username>', password='<token>').cursor()
        cursor.execute('show databases')
        print(cursor.fetchall())
        cursor.close()

    Terhubung menggunakan endpoint internal wilayah yang sama

    from pyhive import hive
    
    if __name__ == '__main__':
        # Ganti <endpoint>, <username>, dan <token> dengan informasi aktual Anda.
        cursor = hive.connect('<endpoint>', port=80, scheme='http', username='<username>', password='<token>').cursor()
        cursor.execute('show databases')
        print(cursor.fetchall())
        cursor.close()

Terhubung ke Spark Thrift Server menggunakan Java

  1. Tambahkan dependensi Maven berikut ke file pom.xml:

    <dependencies>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>3.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-jdbc</artifactId>
                <version>2.1.0</version>
            </dependency>
        </dependencies>
    
    Catatan

    Versi Hive bawaan di Serverless Spark adalah 2.x. Oleh karena itu, hanya versi hive-jdbc 2.x yang didukung.

  2. Tulis kode Java untuk terhubung ke Spark Thrift Server.

    Berikut adalah contoh kode Java yang terhubung ke Spark Thrift Server dan menanyakan daftar database.

    Terhubung menggunakan endpoint publik

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import org.apache.hive.jdbc.HiveStatement;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            String url = "jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>";
            Class.forName("org.apache.hive.jdbc.HiveDriver");
            Connection conn = DriverManager.getConnection(url);
            HiveStatement stmt = (HiveStatement) conn.createStatement();
    
            String sql = "show databases";
            System.out.println("Running " + sql);
            ResultSet res = stmt.executeQuery(sql);
    
            ResultSetMetaData md = res.getMetaData();
            String[] columns = new String[md.getColumnCount()];
            for (int i = 0; i < columns.length; i++) {
                columns[i] = md.getColumnName(i + 1);
            }
            while (res.next()) {
                System.out.print("Row " + res.getRow() + "=[");
                for (int i = 0; i < columns.length; i++) {
                    if (i != 0) {
                        System.out.print(", ");
                    }
                    System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'");
                }
                System.out.println(")]");
            }
            
            conn.close();
        }
    }

    Terhubung menggunakan endpoint internal wilayah yang sama

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import org.apache.hive.jdbc.HiveStatement;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            String url = "jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>";
            Class.forName("org.apache.hive.jdbc.HiveDriver");
            Connection conn = DriverManager.getConnection(url);
            HiveStatement stmt = (HiveStatement) conn.createStatement();
    
            String sql = "show databases";
            System.out.println("Running " + sql);
            ResultSet res = stmt.executeQuery(sql);
    
            ResultSetMetaData md = res.getMetaData();
            String[] columns = new String[md.getColumnCount()];
            for (int i = 0; i < columns.length; i++) {
                columns[i] = md.getColumnName(i + 1);
            }
            while (res.next()) {
                System.out.print("Row " + res.getRow() + "=[");
                for (int i = 0; i < columns.length; i++) {
                    if (i != 0) {
                        System.out.print(", ");
                    }
                    System.out.print(columns[i] + "='" + res.getObject(i + 1) + "'");
                }
                System.out.println(")]");
            }
            
            conn.close();
        }
    }

Terhubung ke Spark Thrift Server menggunakan Spark Beeline

  • Jika menggunakan kluster mandiri, Anda perlu pergi ke direktori bin Spark, kemudian gunakan beeline untuk terhubung ke Spark Thrift Server.

    Terhubung menggunakan endpoint publik

    cd /opt/apps/SPARK3/spark-3.4.2-hadoop3.2-1.0.3/bin/
    
    ./beeline -u "jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>"

    Terhubung menggunakan endpoint internal wilayah yang sama

    cd /opt/apps/SPARK3/spark-3.4.2-hadoop3.2-1.0.3/bin/
    
    ./beeline -u "jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>"
    Catatan

    Contoh jalur instalasi Spark di kluster EMR pada ECS adalah /opt/apps/SPARK3/spark-3.4.2-hadoop3.2-1.0.3. Sesuaikan jalur berdasarkan instalasi Spark sebenarnya pada klien Anda. Gunakan perintah env | grep SPARK_HOME jika Anda tidak yakin tentang jalur instalasi Spark.

  • Jika menggunakan kluster EMR pada ECS, Anda dapat langsung menggunakan klien Spark Beeline untuk terhubung ke Spark Thrift Server.

    Terhubung menggunakan endpoint publik

    spark-beeline -u "jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>"

    Terhubung menggunakan endpoint internal wilayah yang sama

    spark-beeline -u "jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>"

Saat menggunakan Hive Beeline untuk terhubung ke Serverless Spark Thrift Server, kesalahan berikut biasanya terjadi karena versi Hive Beeline tidak kompatibel dengan Spark Thrift Server. Oleh karena itu, kami sarankan menggunakan Hive Beeline 2.x.

24/08/22 15:09:11 [main]: ERROR jdbc.HiveConnection: Error opening session
org.apache.thrift.transport.TTransportException: HTTP Response code: 404

Terhubung ke Spark Thrift Server dengan mengonfigurasi Apache Superset

Apache Superset adalah platform eksplorasi dan visualisasi data modern dengan berbagai macam bentuk grafik, mulai dari grafik garis sederhana hingga grafik geospasial yang sangat rinci. Untuk informasi lebih lanjut tentang Superset, lihat Superset.

  1. Instal dependensi.

    Pastikan Anda telah menginstal paket thrift versi 0.20.0. Jika belum, instal menggunakan perintah berikut:

    pip install thrift==0.20.0
  2. Mulai Superset dan buka antarmuka Superset.

    Untuk informasi lebih lanjut tentang cara memulai Superset, lihat Dokumentasi Superset.

  3. Klik DATABASE di pojok kanan atas halaman untuk pergi ke halaman Connect a database.

  4. Di halaman Connect a database, pilih Apache Spark SQL.

    image

  5. Masukkan string koneksi dan konfigurasikan parameter sumber data terkait.

    Terhubung menggunakan endpoint publik

    hive+https://<username>:<token>@<endpoint>:443/<db_name>

    Terhubung menggunakan endpoint internal wilayah yang sama

    hive+http://<username>:<token>@<endpoint>:80/<db_name>
  6. Klik FINISH untuk mengonfirmasi koneksi dan verifikasi berhasil.

Terhubung ke Spark Thrift Server dengan mengonfigurasi Hue

Hue adalah antarmuka web open-source populer untuk berinteraksi dengan ekosistem Hadoop. Untuk informasi lebih lanjut tentang Hue, lihat Dokumentasi Resmi Hue.

  1. Instal dependensi.

    Pastikan Anda telah menginstal paket thrift versi 0.20.0. Jika belum, instal menggunakan perintah berikut:

    pip install thrift==0.20.0
  2. Tambahkan string koneksi Spark SQL ke file konfigurasi Hue.

    Temukan file konfigurasi Hue (biasanya terletak di /etc/hue/hue.conf) dan tambahkan konten berikut ke file tersebut:

    Terhubung menggunakan endpoint publik

    [[[sparksql]]]
         name = Spark Sql
         interface=sqlalchemy
         options='{"url": "hive+https://<username>:<token>@<endpoint>:443/"}'

    Terhubung menggunakan endpoint internal wilayah yang sama

    [[[sparksql]]]
         name = Spark Sql
         interface=sqlalchemy
         options='{"url": "hive+http://<username>:<token>@<endpoint>:80/"}'
  3. Mulai ulang Hue.

    Setelah memodifikasi konfigurasi, jalankan perintah berikut untuk memulai ulang layanan Hue agar perubahan diterapkan:

    sudo service hue restart
  4. Verifikasi koneksi.

    Setelah Hue berhasil dimulai ulang, akses antarmuka Hue dan temukan opsi Spark SQL. Jika konfigurasi benar, Anda seharusnya dapat terhubung ke Spark Thrift Server dan menjalankan kueri SQL.

    image

Terhubung ke Spark Thrift Server menggunakan DataGrip

DataGrip adalah lingkungan manajemen database untuk pengembang, dirancang untuk memfasilitasi penulisan, pembuatan, dan manajemen database. Database dapat berjalan secara lokal, di server, atau di cloud. Untuk informasi lebih lanjut tentang DataGrip, lihat DataGrip.

  1. Instal DataGrip. Untuk informasi lebih lanjut, lihat Instal DataGrip.

    Versi DataGrip yang digunakan dalam contoh ini adalah 2025.1.2.

  2. Buka klien DataGrip dan akses antarmuka DataGrip.

  3. Buat proyek.

    1. Klik image dan pilih Flie > New > > Project.

      image

    2. Di kotak dialog New Project, masukkan nama proyek, seperti Spark, dan klik OK

  4. Klik ikon di bilah menu Database Explorerimage. Pilih Data Source > Other > Apache Spark.

    image

  5. Di kotak dialog Data Sources and Drivers, konfigurasikan parameter berikut:

    image

    Tab

    Parameter

    Deskripsi

    General

    Name

    Nama koneksi kustom. Contohnya, spark_thrift_server.

    Authentication

    Metode autentikasi. Dalam contoh ini, No auth dipilih.

    Dalam lingkungan produksi, pilih User & Password untuk memastikan hanya pengguna yang berwenang yang dapat mengirimkan tugas SQL, yang meningkatkan keamanan sistem.

    Driver

    Klik Apache Spark, lalu klik Go to Driver untuk memastikan versi Driver adalah ver. 1.2.2.

    Catatan

    Karena versi engine Serverless Spark saat ini adalah 3.x, versi Driver harus 1.2.2 untuk memastikan stabilitas sistem dan kompatibilitas fitur.

    image

    URL

    URL untuk terhubung ke Spark Thrift Server. Berdasarkan lingkungan jaringan Anda (publik atau internal), Anda dapat memilih metode koneksi yang sesuai.

    • Terhubung menggunakan endpoint publik

      jdbc:hive2://<endpoint>:443/;transportMode=http;httpPath=cliservice/token/<token>
    • Terhubung menggunakan endpoint internal wilayah yang sama

      jdbc:hive2://<endpoint>:80/;transportMode=http;httpPath=cliservice/token/<token>

    Options

    Run keep-alive query

    Parameter ini opsional. Pilih parameter ini untuk mencegah pemutusan otomatis karena timeout.

  6. Klik Test Connection untuk memastikan sumber data dikonfigurasi dengan sukses.

    image

  7. Klik OK untuk menyelesaikan konfigurasi.

  8. Gunakan DataGrip untuk mengelola Spark Thrift Server.

    Setelah DataGrip berhasil terhubung ke Spark Thrift Server, Anda dapat melakukan pengembangan data. Untuk informasi lebih lanjut, lihat Bantuan DataGrip.

    Sebagai contoh, di bawah koneksi yang dibuat, Anda dapat mengklik kanan tabel target dan memilih New > > Query Console. Kemudian, Anda dapat menulis dan menjalankan skrip SQL di editor SQL di sebelah kanan untuk melihat informasi data tabel.

    image

Hubungkan Redash ke Spark Thrift Server

Redash adalah alat BI open-source yang menyediakan kemampuan penulisan kueri basis data berbasis web dan visualisasi data.

  1. Instal Redash. Untuk instruksi instalasi, lihat Mengatur Instance Redash.

  2. Instal dependensi. Pastikan paket thrift versi 0.20.0 telah diinstal. Jika belum diinstal, jalankan perintah berikut:

    pip install thrift==0.20.0
  3. Masuk ke Redash.

  4. Di panel navigasi sebelah kiri, klik Settings. Di tab Data Sources, klik +New Data Source.

  5. Di kotak dialog, konfigurasikan parameter berikut, lalu klik Create.

    image

Parameter

Deskripsi

Type Selection

Jenis sumber data. Pilih Hive (HTTP).

Configuration

Name

Masukkan nama kustom untuk sumber data.

Host

Masukkan endpoint Spark Thrift Server Anda. Anda dapat menemukan endpoint publik atau internal di tab Overview.

Port

Gunakan 443 untuk akses melalui domain publik, atau 80 untuk domain internal.

HTTP Path

Atur ke /cliservice.

Username

Masukkan username apa saja seperti root.

Password

Masukkan nilai Token yang Anda buat.

HTTP Scheme

Masukkan https jika menggunakan domain publik, atau http jika menggunakan domain internal.

  1. Di bagian atas halaman, pilih Create  > New Query. Anda dapat menulis pernyataan SQL di editor.

    image

Lihat pekerjaan yang dijalankan menggunakan sesi tertentu

Anda dapat melihat pekerjaan yang dijalankan menggunakan sesi tertentu di halaman Sessions. Prosedur:

  1. Di halaman Sessions, klik nama sesi yang diinginkan.

  2. Di halaman yang muncul, klik tab Execution Records.

    Di tab Execution Records, Anda dapat melihat detail pekerjaan, seperti ID run dan waktu mulai, serta mengakses Spark UI melalui tautan di kolom Spark UI.

image