All Products
Search
Document Center

Hologres:Pemecahan Masalah Error Integrasi MaxCompute

Last Updated:Aug 25, 2026

Error umum dan solusi untuk mengkueri data MaxCompute melalui tabel eksternal Hologres.

Sebelum Anda melakukan pemecahan masalah

Kumpulkan diagnostik berikut sebelum menyelidiki error tertentu:

  1. Periksa log kueri. Kueri hologres.hg_query_log untuk menemukan kueri yang gagal beserta detailnya.

  2. Identifikasi mesin eksekusi. Periksa bidang engine_type dalam log kueri. Hologres menggunakan dua mesin untuk memproses kueri tabel eksternal:

    • HQE (Hologres Query Engine): Akses tabel eksternal yang dipercepat.

    • SQE (Standard Query Engine): Mesin fallback.

  3. Periksa versi Hologres Anda. Banyak perbaikan memerlukan versi tertentu. Jalankan SELECT hg_version(); untuk mengonfirmasi.

Latar Belakang

Hologres vs. MaxCompute

Aspek

MaxCompute

Hologres

Skema penggunaan

Pemrosesan ETL untuk lapisan DWD dan DWS

Kueri interaktif dan penyajian data real-time untuk lapisan ADS

Interaksi pengguna

Eksekusi job asinkron

Kueri sinkron

Sumber daya kluster

Kluster bersama, pengiriman SaaS

Kluster dedicated, pengiriman PaaS

Mesin eksekusi

Model eksekusi job. Tahapan meminta sumber daya sesuai kebutuhan; hasil antara disimpan ke disk.

Arsitektur MPP dengan eksekusi berbasis memori dan penjadwalan di user-space. Tidak ada penulisan ke disk untuk hasil antara.

Penjadwalan

Tingkat proses. Sumber daya dialokasikan secara dinamis pada waktu proses.

Tingkat thread. Sumber daya dialokasikan sebelum startup.

Ekstensibilitas

Virtually unlimited

Untuk kueri kompleks, hindari pengacakan data lintas beberapa node

Format penyimpanan

Columnar

Berbasis baris, columnar, dan hibrida baris-kolom

Biaya penyimpanan

Biaya rendah, berbasis Pangu

Biaya relatif tinggi, berbasis Pangu dengan SSD untuk caching dan akselerasi

Standar antarmuka

SQL MaxCompute, mirip Hive

PostgreSQL

Tabel eksternal vs. tabel internal

  • Tabel eksternal mengakses data langsung dari MaxCompute tanpa menyimpannya secara lokal. Tidak memiliki indeks — komputasi hanya menggunakan CPU. Paling cocok untuk dataset kecil dengan QPS rendah.

  • Tabel internal menyimpan data di Hologres dengan dukungan indeks penuh. Impor data untuk kueri kompleks, pembaruan sering, atau skenario QPS tinggi.

Error izin

Izin SELECT tidak tersedia pada tabel MaxCompute

You have NO privilege 'odps:Select' on {table}

atau:

You have NO privilege 'MaxCompute:Select' on {table}

Penyebab: Akun Anda tidak memiliki izin SELECT pada tabel MaxCompute tersebut.

Solusi: Minta administrator MaxCompute untuk memberikan hak istimewa SELECT pada tabel tersebut. Untuk detailnya, lihat izin MaxCompute.

Izin SELECT tidak tersedia pada tabel lintas proyek

You have NO privilege 'odps:Select' on {table}

Error ini juga terjadi saat mengkueri tabel MaxCompute lintas proyek, bahkan dengan kontrol akses berbasis paket.

Penyebab: Hologres perlu mengetahui konteks proyek MaxCompute mana yang digunakan untuk otorisasi dalam skenario lintas proyek.

Solusi: Tetapkan nama proyek saat ini sebelum menjalankan kueri Anda:

-- Untuk Hologres V0.8+:
set hg_experimental_odps_current_project_name = 'holoprojectname';

-- Untuk Hologres V0.7:
set seahawks.seahawks_internal_current_odps_project = 'holoprojectname';

Ketidaksesuaian label sensitif tingkat kolom

The sensitive label of column '{column}' is 2, but your effective label is 0

Penyebab: Akun Anda hanya memiliki izin pada beberapa kolom di tabel MaxCompute. Versi Hologres sebelum V0.8 belum mendukung sepenuhnya izin tingkat kolom.

Solusi: Pilih salah satu opsi berikut:

  • Upgrade ke V0.8 atau lebih baru (disarankan). Versi ini menangani izin tingkat kolom dengan benar.

  • Modifikasi kueri Anda agar hanya mencakup kolom yang dapat diakses oleh akun Anda.

  • Minta izin untuk semua kolom. Lihat izin MaxCompute.

  • Solusi sementara untuk versi lama: Tetapkan parameter GUC (Grand Unified Configuration) berikut sebelum menjalankan kueri Anda:

set hg_experimental_enable_odps_executor = on;
set hg_experimental_enable_query_master = on;

Jika Anda menggunakan versi yang lebih baru namun masih melihat error ini, kemungkinan ini merupakan cacat sistem. Gunakan solusi sementara alternatif berikut:

set hg_experimental_enable_MaxCompute_executor = on;
set hg_experimental_enable_query_master = on;

Izin LIST tidak tersedia (HoloWeb atau DataStudio)

You have NO privilege 'odps:List' on {project}

Penyebab: Pembuatan tabel eksternal melalui HoloWeb atau DataStudio memerlukan izin List di MaxCompute untuk menampilkan tabel yang tersedia.

Solusi:

Akses ditolak oleh daftar putih IP

Access denied by project ip white list

Penyebab: Proyek MaxCompute target telah mengaktifkan daftar putih IP, dan alamat IP server HoloWeb (sourceIP dalam pesan error) tidak termasuk dalam daftar tersebut.

Solusi: Tambahkan sourceIP dari pesan error ke daftar putih IP proyek MaxCompute target.

Tabel eksternal temporary tersisa saat mengimpor tabel partisi MaxCompute dari HoloWeb

Impor satu klik tabel partisi MaxCompute dari HoloWeb berhenti dengan error berikut:

ERROR: relation "tmp_foreign_XXX" already exists

tmp_foreign_XXX adalah nama tabel eksternal temporary yang dilaporkan dalam pesan error.

Penyebab: HoloWeb membuat tabel eksternal temporary bernama tmp_foreign_XXX untuk membaca data sumber selama impor satu klik. Jika impor gagal atau terganggu, tabel eksternal temporary tetap berada di database. Upaya impor berikutnya kemudian gagal karena tabel dengan nama yang sama sudah ada.

Solusi:

  1. Periksa apakah tabel eksternal temporary tersisa masih berisi data. Ganti tmp_foreign_XXX dengan nama tabel dari pesan error.

    SELECT * FROM tmp_foreign_XXX LIMIT 1;
  2. Tangani hasilnya:

    • Jika tabel tidak mengembalikan baris apa pun, atau datanya sudah sampai di tabel tujuan, hapus tabel sisa tersebut:

      DROP TABLE tmp_foreign_XXX;
    • Jika tabel masih berisi baris, pastikan data telah sampai di tabel tujuan, lalu hapus tabel sisa tersebut.

  3. Jalankan kembali impor satu klik tabel partisi MaxCompute di HoloWeb.

Akun tidak ada di proyek MaxCompute

You don't exist in project {project}

Penyebab: Akun Anda belum ditambahkan sebagai anggota ke proyek MaxCompute yang ditentukan.

Solusi: Verifikasi bahwa nama proyek dalam error sudah benar. Jika benar, minta administrator MaxCompute untuk menambahkan akun Anda ke proyek tersebut. Lihat Ikhtisar izin.

Otorisasi peran enkripsi tidak tersedia

query next from foreign table executor failed validate userinfo

Penyebab: Hologres belum diberikan peran AliyunHologresEncryptionDefaultRole. Error ini juga dapat muncul secara intermiten akibat caching jika otorisasi diberikan kurang dari tiga jam yang lalu.

Solusi: Berikan kebijakan AliyunHologresEncryptionDefaultRolePolicy ke akun tersebut. Lihat Mengkueri data MaxCompute terenkripsi.

Error format data dan kompatibilitas

Bukan file ORC

status { code: SERVER_INTERNAL_ERROR message: "hos_exception: Invalid argument: not an ORC file" }

Penyebab: Tabel eksternal Hologres tidak dapat mengakses tabel MaxCompute selama pemuatan aliran aktif karena data belum dalam format ORC.

Solusi: Tambahkan parameter GUC berikut sebelum pernyataan SQL Anda:

set hg_experimental_enable_access_odps_with_table_api = on;
set hg_experimental_enable_access_odps_orc_via_holo = off;

Ketidaksesuaian skema ORC untuk tipe DECIMAL

Open ORC file failed for schema mismatch. Reader schema

Penyebab: Format penyimpanan untuk DECIMAL dalam tabel ORC MaxCompute telah berubah, biasanya setelah menambahkan bidang DECIMAL baru atau perubahan konfigurasi canary.

Solusi:

  • Jalankan perintah berikut di MaxCompute dan impor ulang data:

set MaxCompute.storage.orc.enable.binary.decimal = false;
  • Atau ubah tipe DECIMAL menjadi DOUBLE di tabel MaxCompute dan refresh data.

Overflow timestamp

Timestamp overflow detected while converting timestamp from orc VectorBatch to arrow

Penyebab: Tabel MaxCompute berisi data TIMESTAMP yang dimuat melalui Tunnel dengan presisi nanodetik, yang tidak didukung oleh Hologres.

Solusi:

  • Ubah tipe TIMESTAMP menjadi DATETIME di MaxCompute.

  • Atau upgrade instans Hologres Anda ke V1.1.70 atau lebih baru.

Evolusi skema tidak diaktifkan

failed to import foreign schema: Failed to get MaxCompute table: Not enable schema evolution

Penyebab: Skema tabel MaxCompute telah dimodifikasi (kolom ditambah atau dihapus), sehingga memasuki status evolusi skema yang tidak dapat dibaca oleh Hologres.

Solusi:

  1. Upgrade instans Hologres Anda ke V1.3 atau lebih baru.

  2. Jalankan IMPORT FOREIGN SCHEMA untuk merefresh skema tabel eksternal setelah perubahan skema tabel MaxCompute.

  3. Jika error tetap muncul, buat ulang tabel MaxCompute lalu buat ulang tabel eksternal.

Tabel transaksional (ACID) tidak didukung

failed to import foreign schema: Failed to get MaxCompute table: Not enable acid table

Penyebab: Tabel MaxCompute adalah tabel transaksional (ACID).

Solusi: Ubah tabel tersebut menjadi tabel MaxCompute standar. Tabel transaksional tidak didukung.

Error batas sumber daya

Batas partisi terlampaui (512)

Specified partitions count in MaxCompute table: exceeds the limitation of 512

atau:

Build desc failed: Exceeds the partition limitation of 512, current match {n} partitions

Penyebab: Hologres memindai maksimal 512 partisi per kueri tabel eksternal secara default.

Catatan

Untuk tabel MaxCompute dengan partisi multi-level, jumlah partisi ditentukan oleh unit partisi paling granular.

Solusi:

  • Tambahkan filter partisi ke kueri Anda untuk mengurangi jumlah partisi yang dipindai.

  • Impor data ke tabel internal, yang tidak memiliki batas partisi. Impor data dari MaxCompute menggunakan SQL.

  • Sesuaikan batas partisi dengan parameter GUC. Nilai default adalah 512 dan maksimum adalah 1024. Menetapkan nilai terlalu tinggi dapat menurunkan performa kueri.

-- Untuk V1.1 dan lebih baru:
set hg_foreign_table_max_partition_limit = 128;

-- Untuk V0.10:
set hg_experimental_foreign_table_max_partition_limit = 128;

Batas ukuran pemindaian terlampaui (200 GB)

Build desc failed: Exceeds the scan limitation of 200 GB, current scan {n} GB

Penyebab: Hologres membatasi pemindaian data tabel eksternal hingga 200 GB per kueri secara default. Ini berlaku untuk partisi yang dipindai, bukan total data yang disimpan.

Solusi:

  • Tambahkan filter untuk mengurangi partisi yang diakses, sehingga data yang dipindai tetap di bawah 200 GB.

  • Impor data ke Hologres sebelum mengkueri. Impor data dari MaxCompute menggunakan SQL.

  • (Tidak disarankan) Tingkatkan batas pemindaian. Ganti nilai dengan ukuran yang diperlukan dalam GB. Meningkatkan batas ini secara berlebihan dapat menurunkan performa dan menyebabkan error OOM (kehabisan memori).

set hg_experimental_foreign_table_max_scan_size = 400;

Sumber daya habis (server sibuk)

Request denied, may caused by server busy

Penyebab: Sumber daya kueri tabel eksternal telah habis.

Solusi:

  • Optimalkan SQL Anda. Lihat Mengoptimalkan performa kueri untuk tabel eksternal MaxCompute.

  • Kurangi DOP (Degree of Parallelism). DOP mengontrol konkurensi untuk membaca data tabel eksternal per node eksekusi. Default: 256, rentang: 0–1024. Terlalu tinggi berisiko menyebabkan error OOM; terlalu rendah menurunkan performa.

-- Periksa DOP saat ini:
show hg_foreign_table_executor_max_dop;

-- Atur ke setengah nilai saat ini (contoh):
set hg_foreign_table_executor_max_dop = 18;

Batas memori terlampaui selama impor

Query executor exceeded total memory limitation {limit}: {used} bytes used

Penyebab: Kueri melebihi batas memori komputasi. Setiap node Hologres memiliki memori 64 GB, yang dibagi kira-kira menjadi tiga bagian: komputasi, caching, dan metadata.

Solusi: Coba langkah-langkah berikut secara berurutan:

  1. Periksa rencana eksekusi. Jalankan explain analyze <sql>; untuk meninjau jumlah baris. Jika beberapa tabel tidak memiliki statistik terbaru, pengoptimal mungkin memilih urutan join yang suboptimal. Jalankan analyze <tablename>; pada semua tabel yang terlibat untuk memperbarui statistik.

  2. Kurangi ukuran batch. Tabel lebar atau baris besar dapat menghabiskan memori per batch. Kurangi jumlah baris per batch:

       set hg_experimental_query_batch_size = 1024;  -- Default: 8192
       insert into holo_table select * from mc_table;
  3. Kurangi DOP impor. Parameter hg_foreign_table_executor_max_dop secara default sama dengan jumlah CU instans. Tetapkan nilai yang lebih kecil selama impor:

       set hg_foreign_table_executor_max_dop = 8;
       insert into holo_table select * from mc_table;
  4. Hapus duplikasi data. Dengan insert on conflict, duplikasi berlebihan meningkatkan tekanan memori. Hapus duplikasi di MaxCompute sebelum impor. Gabungkan beberapa baris data menjadi satu baris.

  5. Upgrade Hologres. Mulai V1.1.24, Hologres secara dinamis menyesuaikan alokasi memori untuk komputasi. Peningkatan instans.

  6. Tingkatkan kapasitas instans. Jika semua pendekatan lain gagal, tambahkan sumber daya instans. Peningkatan.

Fitur yang tidak didukung

Tipe tabel CFile tidak didukung

query next from foreign table executor failed, GetRecordBatch() is not implemented

Penyebab: Tabel MaxCompute adalah tabel tipe CFile, yang tidak didukung oleh Hologres melalui jalur akses default.

Solusi: Tambahkan parameter GUC berikut sebelum pernyataan SQL Anda:

set hg_experimental_enable_access_odps_with_table_api = on;

Data Streaming Tunnel tidak dapat dibaca

Query next from foreign table executor failed, not implemented

Penyebab: Tabel MaxCompute dimuat melalui Streaming Tunnel (tunnel.createStreamUploadSession). Diperlukan parameter GUC khusus untuk membaca data ini.

Solusi (Hologres V1.3 dan lebih baru): Tambahkan parameter berikut sebelum kueri Anda:

set hg_experimental_enable_access_odps_with_table_api = on;
set hg_experimental_enable_access_odps_orc_via_holo = off;

Solusi sementara untuk versi sebelum V1.3: Hentikan pemuatan streaming di MaxCompute, lalu gabungkan data:

set odps.merge.task.mode = sql;
set odps.merge.lock.expire.time = 0;
ALTER TABLE tablename [PARTITION] MERGE SMALLFILES;

Tampilan MaxCompute tidak didukung

Build desc failed: failed to check permission: Currently not supported table type "view"

Penyebab: Hologres tidak mendukung tampilan MaxCompute sebagai tabel eksternal.

Error koneksi dan infrastruktur

Kegagalan pengambilan metadata (Pangu)

Build desc failed: failed to get foreign table split: MaxCompute-0010000: System internal error - get input pangu dir meta fail

Penyebab: Konfigurasi Hologres untuk membaca dari MaxCompute belum diperbarui tepat waktu.

Solusi: Tunggu beberapa menit lalu coba lagi. Jika masalah berlanjut, hubungi dukungan teknis.

Koneksi RPC ditutup akibat file kecil

Build desc failed: failed to get foreign table split: ERPC_ERROR_CONNECTION_CLOSED

Penyebab: Tabel MaxCompute memiliki terlalu banyak file kecil, sehingga permintaan metadata melebihi batas RPC 1 GB.

Solusi:

  • Gabungkan file kecil di MaxCompute:

set MaxCompute.merge.task.mode = sql;
set MaxCompute.merge.lock.expire.time = 0;
ALTER TABLE <tablename> [PARTITION] MERGE SMALLFILES;
  • Upgrade ke Hologres V0.10.21 atau lebih baru, di mana masalah ini telah diperbaiki. Peningkatan instans.

  • Jika volume data kecil, impor data ke Hologres. Hubungi dukungan teknis MaxCompute jika masalah berlanjut.

Kegagalan akses data MaxCompute terenkripsi

status { code: SERVER_INTERNAL_ERROR message: "hos_exception: IO error: Failed to execute pangu open normal file, err: PanguParameterInvalidException" }

Penyebab: HQE tidak dapat mengakses data MaxCompute terenkripsi di Pangu.

Solusi: Alihkan mesin eksekusi ke SQE, yang dapat mengakses data terenkripsi. Tetapkan ini di tingkat database (berlaku untuk koneksi baru):

ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;

Atau di tingkat session:

SET hg_experimental_enable_access_odps_orc_via_holo = false;

Penyetelan performa

Perlambatan kueri setelah evolusi skema tabel eksternal

Penyebab: Hologres secara default menggunakan HQE untuk mempercepat kueri tabel eksternal. Setelah perubahan skema MaxCompute, Hologres beralih ke SQE, yang lebih lambat.

Solusi:

  1. Kueri hologres.hg_query_log untuk mengidentifikasi kueri lambat.

  2. Periksa bidang engine_type. Jika menunjukkan SQE, penurunan performa disebabkan oleh fallback mesin.

  3. Buat ulang tabel eksternal yang terpengaruh dengan skema terbaru di Hologres.

Kueri tabel eksternal lambat (umum)

Optimalkan pernyataan SQL Anda. Mengoptimalkan performa kueri untuk tabel eksternal MaxCompute.

Referensi cepat parameter GUC

Parameter GUC yang dirujuk dalam dokumen ini:

Parameter

Default

Rentang

Versi min.

Tujuan

hg_experimental_enable_access_odps_with_table_api

--

on/off

V1.3

Akses tabel tipe CFile dan tabel yang dimuat streaming

hg_experimental_enable_access_odps_orc_via_holo

on

on/off

--

Beralih dari mesin HQE ke SQE untuk tabel eksternal. Atur ke false untuk data terenkripsi.

hg_foreign_table_max_partition_limit

512

1--1024

V1.1

Jumlah maksimum partisi yang dipindai per kueri

hg_experimental_foreign_table_max_partition_limit

512

--

V0.10

Versi lawas dari hg_foreign_table_max_partition_limit

hg_experimental_foreign_table_max_scan_size

200 (GB)

--

--

Ukuran maksimum pemindaian data per kueri

hg_foreign_table_executor_max_dop

256

0--1024

--

DOP untuk membaca dari tabel eksternal di satu node

hg_experimental_query_batch_size

8192

--

--

Jumlah baris yang dibaca per batch selama impor

hg_experimental_enable_odps_executor

--

on/off

--

Paksa jalur eksekusi SQE (versi lama)

hg_experimental_enable_MaxCompute_executor

--

on/off

--

Paksa jalur eksekusi SQE (versi baru)

hg_experimental_enable_query_master

--

on/off

--

Aktifkan query master untuk solusi sementara izin tingkat kolom

hg_experimental_odps_current_project_name

--

nama proyek

V0.8

Tetapkan konteks proyek MaxCompute untuk akses lintas proyek

seahawks.seahawks_internal_current_odps_project

--

nama proyek

V0.7

Versi lawas dari hg_experimental_odps_current_project_name