Topik ini menjelaskan cara membuat tabel eksternal Hologres, menentukan sumber data Hologres, mengonfigurasi informasi autentikasi STS atau mengaktifkan double signature, memetakan tabel tujuan, serta menyediakan detail driver Java Database Connectivity (JDBC) dalam pernyataan CREATE EXTERNAL TABLE.
Pendahuluan
Hologres adalah gudang data analitik interaktif real-time yang kompatibel dengan protokol PostgreSQL dan terintegrasi secara mulus dengan MaxCompute di lapisan penyimpanan. Anda dapat membuat tabel eksternal Hologres di MaxCompute untuk mengkueri data dari sumber data Hologres menggunakan driver JDBC PostgreSQL dan informasi autentikasi STS. Metode ini menghindari penyimpanan berlebih serta menghilangkan kebutuhan impor atau ekspor data, sehingga menghasilkan kueri yang cepat.
Penerapan
Operasi Data Manipulation Language (DML)
MaxCompute tidak mendukung operasi UPDATE atau DELETE pada tabel eksternal Hologres.
Operasi INSERT OVERWRITE tidak didukung untuk tabel eksternal Hologres.
Untuk menimpa data dari MaxCompute ke Hologres, baca tabel eksternal yang memetakan tabel MaxCompute dari Hologres dan gunakan semantik INSERT OVERWRITE Hologres. Untuk informasi selengkapnya, lihat INSERT OVERWRITE.
Risiko penulisan data
Saat menulis volume data besar ke tabel eksternal Hologres, penulisan paralel lintas beberapa proses kadang-kadang dapat menyebabkan penulisan ulang data, sehingga menghasilkan duplikasi.
Partisi
Tabel partisi di Hologres tidak berkorespondensi dengan tabel partisi di MaxCompute. Tabel eksternal Hologres tidak mendukung partisi. Namun, dalam mode baca langsung, jika Anda mengkueri tabel eksternal Hologres yang dipetakan ke tabel induk partisi di Hologres, pemangkasan partisi berlaku ketika kondisi kueri sesuai dengan kolom kunci partisi tabel anak.
Tabel eksternal Hologres tidak mendukung properti cluster.
Tabel eksternal Hologres tidak dapat dipetakan ke Dynamic Tables di Hologres.
Buat tabel eksternal Hologres
Buat tabel eksternal Hologres dalam mode STS atau mode double-signature.
Catatan
Aturan pembuatan tabel eksternal
Jika Anda mengaktifkan daftar putih alamat IP untuk Hologres, Anda harus membuat tabel eksternal Hologres dalam mode double-signature. Jika dibuat dalam mode STS, akses MaxCompute ke Hologres akan diblokir oleh daftar putih alamat IP.
Untuk tabel induk dan anak di Hologres, nama tabel ditentukan dalam tabel eksternal Hologres dan pernyataan SQL dieksekusi. Baik tabel induk maupun anak dapat dipetakan ke tabel eksternal Hologres, tetapi tabel induk bersifat read-only.
Saat menulis data ke tabel eksternal Hologres, mekanisme INSERT ON CONFLICT (UPSERT) Hologres tidak didukung. Jika tabel sumber Hologres memiliki primary key, pastikan data yang Anda tulis tidak melanggar batasan keunikan primary key di tabel sumber.
Nama tabel dan bidang tidak peka huruf besar/kecil. Anda tidak dapat memaksa konversi huruf besar/kecil saat membuat, mengkueri, atau mereferensikan tabel dan bidang.
Kompatibilitas skema
Jika skema tabel sumber Hologres berbeda dengan skema tabel eksternal:
Jumlah kolom tidak konsisten: Jika tabel sumber Hologres memiliki lebih sedikit kolom daripada pernyataan Data Definition Language (DDL) tabel eksternal, terjadi kesalahan saat membaca data dari Hologres, misalnya pesan kesalahan
column "xxx" does not exist. Jika tabel sumber Hologres memiliki lebih banyak kolom daripada pernyataan DDL, kolom tambahan tersebut diabaikan.Tipe kolom tidak konsisten: MaxCompute tidak mendukung penggunaan tipe INT untuk menerima data STRING dari tabel sumber Hologres. Anda dapat menggunakan tipe STRING untuk menerima data INT, tetapi hal ini tidak disarankan.
Sintaks
Saat membuat tabel eksternal, Anda harus menentukan StorageHandler, mengonfigurasi informasi autentikasi STS atau mengaktifkan double signature, serta menentukan titik akhir JDBC dalam pernyataan DDL CREATE EXTERNAL TABLE untuk mengakses sumber data Hologres.
Buat tabel eksternal Hologres dalam mode STS
Untuk contoh kode, lihat Buat tabel eksternal Hologres (mode STS).
CREATE EXTERNAL TABLE [IF NOT EXISTS] <table_name>(
<col1_name> <data_type>,
<col2_name> <data_type>,
......
)
stored BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'
WITH serdeproperties (
'odps.properties.rolearn'='<ram_arn>')
location '<jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/>'
tblproperties (
'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver',
'odps.federation.jdbc.target.db.type'='holo',
'odps.federation.jdbc.colmapping'='<table_column1>:<source_column1>, <table_column2>:<source_column2>,...'
);Buat tabel eksternal Hologres dalam mode double-signature
Untuk contoh kode, lihat Buat tabel eksternal Hologres (mode double-signature).
Tabel eksternal Hologres yang dibuat dalam mode double-signature memungkinkan RAM user yang sama mengakses tabel yang diotorisasi di MaxCompute dan Hologres tanpa otorisasi manual. Mode ini juga mendukung fitur daftar putih alamat IP Hologres.
-- Aktifkan mode double-signature.
SET odps.sql.common.table.planner.ext.hive.bridge=true;
-- Buat tabel eksternal.
CREATE EXTERNAL TABLE [IF NOT EXISTS] <table_name>(
<col1_name> <data_type>,
<col2_name> <data_type>,
......
)
STORED BY '<com.aliyun.odps.jdbc.JdbcStorageHandler>'
LOCATION '<jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/>'
tblproperties (
'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver',
'odps.federation.jdbc.target.db.type'='holo',
['odps.federation.jdbc.colmapping'='<table_column1>:<source_column1>, <table_column2>:<source_column2>,...']
);Parameter
Parameter | Wajib | Deskripsi |
odps.sql.common.table.planner.ext.hive.bridge | Ya | Menentukan apakah akan membuat tabel eksternal Hologres dalam mode double-signature. Tetapkan nilai ke |
Tidak | Anda tidak perlu menentukan parameter ini jika membuat tabel eksternal Hologres dalam mode STS. | |
IF NOT EXISTS | Tidak |
|
table_name | Ya | Nama tabel eksternal Hologres yang akan dibuat di MaxCompute. |
col_name | Ya | Nama kolom dalam tabel eksternal Hologres. |
data_type | Ya | Tipe data kolom dalam tabel eksternal Hologres. |
STORED BY | Ya | Menentukan StorageHandler, yang mendefinisikan cara mengkueri tabel eksternal Hologres. Nilainya tetap |
ram_arn | Ya | Diperlukan saat membuat tabel eksternal Hologres dalam mode STS. Menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM untuk autentikasi STS saat membuat tabel eksternal. Untuk informasi tentang cara membuat dan memberikan izin kepada peran RAM, lihat Otorisasi peran RAM reguler dalam mode STS untuk Hologres.
|
Tidak | Anda tidak perlu menentukan parameter ini jika membuat tabel eksternal Hologres dalam mode double-signature. | |
LOCATION | Ya | Titik akhir JDBC instans Hologres. Titik akhir berisi parameter berikut:
|
tblproperties | Ya |
|
Contoh
Persiapkan data
Jika Anda sudah memiliki database Hologres, tabel Hologres, dan data uji, lewati langkah ini.
Buat database Hologres
Masuk ke Konsol Manajemen Hologres, lalu di pojok kiri atas, pilih wilayah.
Di panel navigasi sebelah kiri, pilih Instances.
Jika Anda belum memiliki instans Hologres, Anda harus terlebih dahulu membeli instans Hologres.
Di halaman Instances, klik nama instans yang dituju.
Di halaman detail instans, klik Connect To Instance.
Klik tab Metadata Management di atas.
Klik Create Database. Pada kotak dialog yang muncul, masukkan Database Name dan biarkan pengaturan parameter lainnya tetap pada nilai default.
Buat tabel Hologres
Di halaman detail instans, klik Connect To Instance.
Klik tab SQL Editor di atas.
Masukkan pernyataan berikut:
CREATE TABLE IF NOT EXISTS holo ( id INT PRIMARY KEY, name TEXT ); INSERT INTO holo (id, name) VALUES (1, 'kate'), (2, 'mary'), (3, 'bob'), (4, 'tom'), (5, 'lulu'), (6, 'mark'), (7, 'haward'), (8, 'lilei'), (9, 'hanmeimei'), (10, 'lily'), (11, 'lucy'); SELECT * FROM holo ORDER BY id;
Buat tabel eksternal Hologres (mode STS)
Hologres tidak mendukung penambahan peran RAM dari Akun Alibaba Cloud lain ke instans database. Oleh karena itu, mode STS untuk otorisasi peran reguler di Hologres hanya mendukung peran RAM yang berasal dari akun yang sama. Demikian pula, saat MaxCompute mengakses tabel eksternal atau skema eksternal Hologres, hanya peran RAM dari akun yang sama yang didukung.
Prasyarat
Persiapkan proyek MaxCompute untuk membuat tabel eksternal Hologres.
Untuk informasi selengkapnya tentang cara membuat proyek MaxCompute, lihat Buat proyek MaxCompute.
Untuk informasi tentang cara membuat dan memberikan izin kepada peran RAM, lihat Otorisasi peran RAM reguler dalam mode STS untuk Hologres.
Buat tabel eksternal di MaxCompute
Masuk ke klien MaxCompute dan masukkan proyek MaxCompute tujuan.
Jalankan perintah berikut untuk membuat tabel eksternal Hologres.
Informasi instans Hologres berikut didasarkan pada langkah-langkah di bagian Persiapkan data:
Nama database Hologres:
holo_external_test.Skema database Hologres:
public.Nama tabel Hologres:
holo.Titik akhir jaringan klasik database Hologres:
hgprecn-cn-oew210ut****-cn-hangzhou-internal.hologres.aliyuncs.com:80.
CREATE EXTERNAL TABLE IF NOT EXISTS my_table_holo_jdbc ( id bigint, name string ) stored BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' WITH serdeproperties ( 'odps.properties.rolearn'='acs:ram::139699392458****:role/<role name>') location 'jdbc:postgresql://hgprecn-cn-oew210ut****-cn-hangzhou-internal.hologres.aliyuncs.com:80/<holo database name>?ApplicationName=MaxCompute¤tSchema=public&useSSL=true&table=<table name>/' tblproperties ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', 'odps.federation.jdbc.colmapping'='id:id,name:name' );Jalankan perintah berikut untuk mengkueri tabel sumber Hologres menggunakan tabel eksternal Hologres baru.
-- Properti berikut harus ditambahkan untuk mengakses tabel eksternal Hologres. SET odps.sql.split.hive.bridge=true; SET odps.sql.hive.compatible=true; SET odps.table.api.enable.holo.table=true; -- Aktifkan mode baca langsung JDBC. -- Kueri data dari tabel eksternal Hologres. SELECT * FROM my_table_holo_jdbc limit 10; -- Hasil berikut dikembalikan. +------------+------------+ | id | name | +------------+------------+ | 9 | hanmeimei | | 4 | tom | | 7 | haward | | 2 | mary | | 5 | lulu | | 8 | lilei | | 10 | lily | | 1 | kate | | 6 | mark | | 11 | lucy | +------------+------------+Tukar data dan lakukan analisis join dengan Hologres menggunakan tabel eksternal Hologres.
Gunakan tabel eksternal Hologres untuk menulis data yang diproses MaxCompute ke Hologres guna percepatan analisis dan layanan online. Perintah contoh berikut disediakan.
-- Properti berikut harus ditambahkan untuk mengakses tabel eksternal Hologres. SET odps.sql.split.hive.bridge=true; SET odps.sql.hive.compatible=true; SET odps.table.api.enable.holo.table=true; -- Aktifkan mode baca langsung JDBC. -- Masukkan data ke tabel eksternal Hologres. INSERT INTO my_table_holo_jdbc VALUES (12,'alice'); -- Kueri data dari tabel eksternal Hologres. SELECT * FROM my_table_holo_jdbc; -- Hasil berikut dikembalikan. +------------+------------+ | id | name | +------------+------------+ | 9 | hanmeimei | | 4 | tom | | 7 | haward | | 2 | mary | | 5 | lulu | | 12 | alice | | 8 | lilei | | 10 | lily | | 1 | kate | | 11 | lucy | | 6 | mark | | 3 | bob | +------------+------------+Simpan tabel dimensi yang sering diperbarui di Hologres untuk memenuhi persyaratan pembaruan dinamis real-time. MaxCompute mengakses tabel dimensi ini menggunakan tabel eksternal dan melakukan analisis join dengan tabel fakta di MaxCompute. Perintah contoh berikut disediakan.
-- Properti berikut harus ditambahkan untuk mengakses tabel eksternal Hologres. SET odps.sql.split.hive.bridge=true; SET odps.sql.hive.compatible=true; -- Buat tabel internal MaxCompute. CREATE TABLE holo_test AS SELECT * FROM my_table_holo_jdbc; -- Lakukan analisis join pada tabel internal MaxCompute dan tabel eksternal Hologres. SELECT * FROM my_table_holo_jdbc t1 INNER JOIN holo_test t2 ON t1.id=t2.id; -- Hasil berikut dikembalikan. +------------+------------+------------+------------+ | id | name | id2 | name2 | +------------+------------+------------+------------+ | 9 | hanmeimei | 9 | hanmeimei | | 4 | tom | 4 | tom | | 7 | haward | 7 | haward | | 2 | mary | 2 | mary | | 5 | lulu | 5 | lulu | | 12 | alice | 12 | alice | | 8 | lilei | 8 | lilei | | 10 | lily | 10 | lily | | 1 | kate | 1 | kate | | 11 | lucy | 11 | lucy | | 6 | mark | 6 | mark | | 3 | bob | 3 | bob | +------------+------------+------------+------------+
Buat tabel eksternal Hologres (mode double-signature)
Double signature adalah protokol autentikasi dan otorisasi yang dikembangkan bersama oleh MaxCompute dan Hologres. Saat menggunakan mode ini, MaxCompute menandatangani informasi log masuk akun Anda dan meneruskan data autentikasi ke Hologres. Hologres kemudian mengotentikasi dan mengotorisasi akun yang sama berdasarkan protokol yang disepakati dengan MaxCompute. Akibatnya, Anda dapat menggunakan akun yang sama di MaxCompute dan Hologres untuk langsung mengakses tabel eksternal tanpa mengonfigurasi informasi autentikasi tambahan.
Prasyarat
Persiapkan proyek MaxCompute untuk membuat tabel eksternal Hologres.
Untuk informasi selengkapnya tentang cara membuat proyek MaxCompute, lihat Buat proyek MaxCompute.
Akun dengan nama yang sama dengan akun MaxCompute ada di Hologres, dan akun ini memiliki izin baca dan tulis pada tabel yang sesuai di Hologres.
Hanya Hologres V1.3 dan versi setelahnya yang mendukung pembuatan tabel eksternal Hologres dalam mode double-signature dari MaxCompute. Saat ini, mode ini hanya mendukung pembacaan data dari tabel eksternal Hologres. Penulisan data ke tabel eksternal Hologres tidak didukung.
Buat tabel eksternal di MaxCompute
Masuk ke klien MaxCompute dan masukkan proyek MaxCompute tujuan.
Jalankan perintah berikut untuk membuat tabel eksternal Hologres.
Informasi instans Hologres berikut didasarkan pada langkah-langkah di bagian Persiapkan data:
Nama database Hologres:
holo_external_test.Skema database Hologres:
public.Nama tabel Hologres:
holo.Titik akhir jaringan klasik database Hologres:
hgprecn-cn-oew210ut****-cn-hangzhou-internal.hologres.aliyuncs.com:80.
-- Buat tabel eksternal. CREATE EXTERNAL TABLE IF NOT EXISTS holo_mc_external_dbl ( id int, name string ) STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' location 'jdbc:postgresql://hgpostcn-cn-****-cn-hangzhou-internal.hologres.aliyuncs.com:80/<holo database name>?ApplicationName=MaxCompute¤tSchema=public&preferQueryMode=simple&useSSL=false&table=<table name>/' TBLPROPERTIES ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', 'odps.federation.jdbc.colmapping'='id:id,name:name' );Kueri tabel eksternal.
-- Kueri tabel eksternal. Perintah ini harus dijalankan bersamaan dengan perintah yang mengaktifkan mode double-signature. SET odps.sql.common.table.planner.ext.hive.bridge=true; SELECT * FROM holo_mc_external_dbl; -- Hasil berikut dikembalikan. +------------+------------+ | id | name | +------------+------------+ | 9 | hanmeimei | | 4 | tom | | 7 | haward | | 2 | mary | | 5 | lulu | | 12 | alice | | 8 | lilei | | 10 | lily | | 1 | kate | | 11 | lucy | | 6 | mark | | 3 | bob | +------------+------------+
Aktifkan pembacaan langsung tabel eksternal Hologres dari penyimpanan
MaxCompute membaca data dari tabel eksternal Hologres dalam mode JDBC. Versi saat ini mendukung pembacaan langsung data dari lapisan penyimpanan Hologres, yang memberikan manfaat berikut:
Mengurangi latensi pembacaan tabel secara signifikan dan meningkatkan kecepatan kueri data.
Mengurangi jumlah koneksi ke node frontend (FE) Hologres secara signifikan. Sebagian besar kueri hanya memerlukan satu koneksi.
Batasan
Saat Anda mengaktifkan pembacaan langsung untuk Hologres, batasan berikut berlaku. Jika salah satu kondisi tidak terpenuhi, sistem akan kembali ke mode JDBC.
Persyaratan versi
Instans Hologres Anda harus V1.3.34 atau lebih baru. Versi sebelumnya tidak mendukung pembacaan langsung.
Batasan jenis tabel
Pembacaan langsung tabel penyimpanan dingin Hologres tidak didukung.
Pembacaan langsung tabel berorientasi baris Hologres tidak didukung.
Batasan pemetaan tipe data
Saat menggunakan mode pembacaan langsung MaxCompute, kesalahan waktu minor dapat terjadi saat memetakan tipe Hologres TIMESTAMP WITH TIME ZONE ke tipe TIMESTAMP. Perbedaannya sebagai berikut:
Kesalahan nilai waktu
Jika waktu dalam kolom TIMESTAMP WITH TIME ZONE di Hologres lebih awal dari
1900-12-31 15:54:15, waktu yang dikueri oleh MaxCompute akan terlambat 5 menit 44 detik.Jika waktu dalam kolom TIMESTAMP WITH TIME ZONE di Hologres antara
1900-12-31 15:54:16dan1969-12-31 23:59:58, waktu yang dikueri oleh MaxCompute 1 detik lebih lambat.Jika waktu dalam kolom TIMESTAMP WITH TIME ZONE di Hologres lebih baru dari
1969-12-31 23:59:59, waktu yang dikueri oleh MaxCompute sesuai dengan waktu di Hologres.
Offset zona waktu
Jika MaxCompute menggunakan UTC+8 dan waktu dalam kolom TIMESTAMP WITH TIME ZONE di Hologres adalah
2000-01-01 00:00:00, waktu yang dikueri oleh MaxCompute adalah2000-01-01 08:00:00.Jika MaxCompute menggunakan UTC+8 dan waktu dalam kolom TIMESTAMP WITH TIME ZONE di Hologres adalah
1969-01-01 00:00:00, waktu yang dikueri oleh MaxCompute adalah1969-01-01 08:00:01.
Batasan wilayah yang sama
Karena batasan konektivitas jaringan, hanya instans MaxCompute di wilayah yang sama yang dapat mengakses instans Hologres. Akses lintas wilayah mengembalikan kesalahan berikut:
FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: Pangu request failed with error code 3.Jika Hologres dikonfigurasi dengan arsitektur master-slave, Anda hanya dapat menggunakan URL koneksi instans utama. URL koneksi untuk instans slave tidak didukung.
Batasan tambahan untuk mode Foreign Server: Saklar sintaks tingkat skema harus diaktifkan untuk proyek MaxCompute.
Aktifkan fitur
Tambahkan parameter berikut sebelum pernyataan SQL saat mengkueri tabel eksternal Hologres di MaxCompute.
SET odps.table.api.enable.holo.table=true;Tetapkan saklar pembacaan langsung tingkat proyek.
-- Anda dapat mengaktifkan mode pembacaan langsung dan menonaktifkan fallback ke mode JDBC di tingkat proyek.
-- Aktifkan mode pembacaan langsung di tingkat proyek:
setproject odps.table.api.enable.holo.table=true; -- true: aktifkan, false: nonaktifkan
-- Nonaktifkan fallback default ke mode JDBC:
setproject odps.table.api.allow.fallback.jdbc=false; -- true: fallback, false: jangan fallbackVerifikasi mode pembacaan langsung
Anda dapat melihat log di Logview untuk memeriksa apakah kueri berjalan dalam mode pembacaan langsung. Untuk informasi selengkapnya tentang cara menggunakan Logview, lihat Gunakan Logview V2.0 untuk melihat informasi pekerjaan.
Di tab Summary Logview, temukan bidang external holo tables untuk melihat propertinya. Formatnya sebagai berikut:
<project_name>.<table_name>:<Access mode>[<(Fallback reason)>]Deskripsi parameter:
Parameter | Deskripsi |
project_name | Nama proyek. |
table_name | Nama tabel. |
Access mode | Mode akses tabel eksternal. Nilai yang valid:
|
Fallback reason | Jika Access mode adalah
|
Tugas yang berjalan dalam mode pembacaan langsung kadang-kadang dapat mencapai batas pembacaan langsung dan kembali ke mode JDBC. Jika beban kerja berat selama pembacaan langsung, fallback ke mode JDBC akan mengonsumsi banyak sumber daya kolam koneksi Hologres. Selain itu, efisiensi transmisi data dalam mode JDBC jauh lebih rendah daripada mode pembacaan langsung, dan sumber daya dilepaskan secara perlahan.
Pantau tekanan beban pada instans Hologres setelah fallback ke mode JDBC. Dalam kasus ekstrem, banyak pekerjaan fallback dapat memengaruhi layanan lain yang mengakses instans Hologres. Untuk mencegah hal ini, tambahkan parameter set odps.table.api.allow.fallback.jdbc=false; ke tugas pembacaan langsung untuk menonaktifkan fallback otomatis dan menghindari dampak tak terduga.
Impor dan ekspor data Hologres
Tipe data yang didukung
Batasan tipe DECIMAL:
Untuk tabel eksternal Hologres yang dibuat di MaxCompute, tipe data
DECIMALtetap padadecimal(38,18)dan tidak dapat diubah. Jika tabel sumber memiliki tempat desimal lebih sedikit, definisikan kolom sebagai tipeSTRINGdi tabel eksternal MaxCompute dan gunakan fungsiCASTuntuk konversi saat diperlukan.Batasan tipe kompleks:
Tabel eksternal Hologres yang dibuat di MaxCompute tidak mendukung tipe data kompleks seperti
Array,Map, danStruct.Tipe tidak kompatibel lainnya:
Tipe data di Hologres seperti
MONEYtidak memiliki tipe data yang sesuai di MaxCompute dan tidak didukung.
Tabel berikut memberikan detail lebih lanjut.:
Tipe data Hologres | Tipe data MaxCompute | JDBC read | JDBC write | Pembacaan langsung (odps.table.api.enable.holo.table=true) | Deskripsi |
INTEGER (alias: INT atau INT4) | INT | Integer bertanda 32-bit. | |||
TEXT | STRING, VARCHAR | Tipe string. Batas panjang saat ini adalah 8 MB. | |||
SMALLINT | SMALLINT | Integer bertanda 16-bit. | |||
INT2 | SMALLINT | Integer bertanda 16-bit. | |||
BIGINT (alias: INT8) | BIGINT | Integer bertanda 64-bit. | |||
BYTEA | BINARY | Tipe data biner. Batas panjang saat ini adalah 8 MB. Ukuran maksimum tipe | |||
REAL (alias: FLOAT4) | FLOAT | Tipe floating-point biner 32-bit. | |||
DOUBLE PRECISION (alias: FLOAT8) | DOUBLE | Tipe floating-point biner 64-bit. | |||
BOOLEAN (alias: BOOL) | BOOLEAN | Tipe BOOLEAN. | |||
TIMESTAMP | TIMESTAMP_NTZ | Presisi penyimpanan adalah dalam satuan nanodetik. Kesalahan zona waktu dapat terjadi. Tipe TIMESTAMP di Hologres tidak mencakup zona waktu, dan presisi penyimpanannya adalah mikrodetik. | |||
TIMESTAMP WITH TIME ZONE (alias: TIMESTAMPTZ) | TIMESTAMP | Tipe timestamp dengan presisi hingga nanodetik. Formatnya adalah MaxCompute dan Hologres melakukan konversi presisi di lapisan dasar. MaxCompute mengeluarkan data dalam format yang tidak mencakup zona waktu. | |||
DECIMAL (alias: NUMERIC) | DECIMAL(precision,scale) | Tipe data numerik eksak desimal.
Jika Anda tidak menentukan presisi untuk tipe DECIMAL di MaxCompute, nilai default adalah | |||
CHAR(n) | CHAR(n) | Tipe Ukuran maksimum tipe | |||
VARCHAR(n) | VARCHAR(n) | Tipe Ukuran maksimum tipe | |||
DATE | DATE | Tipe tanggal. Formatnya adalah | |||
INT4[] | ARRAY<INT> | Tipe kompleks ARRAY. | |||
INT8[] | ARRAY<BIGINT> | ||||
FLOAT4[] | ARRAY<FLOAT> | ||||
FLOAT8[] | ARRAY<DOUBLE> | ||||
BOOLEAN[] | ARRAY<BOOLEAN> | ||||
TEXT[] | ARRAY<STRING> | ||||
JSONB | JSON | Tipe kompleks JSON. Didukung dalam mode pembacaan langsung. | |||
JSON | STRING | Tipe string. Batas panjang saat ini adalah 8 MB. Tipe JSON Hologres didukung dalam mode JDBC. | |||
SERIAL (urutan auto-increment) | INT | Untuk bidang auto-increment SERIAL di Hologres, Anda dapat menggunakan tipe INT di MaxCompute untuk menerima data. Namun, fitur auto-increment tidak tersedia selama penulisan data. | |||
RoaringBitmap | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
RoaringBitmap64 | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
BIT(n) | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
VARBIT(n) | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
INTERVAL | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
TIMETZ | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
TIME | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
INET | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
MONEY | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
OID | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. | |||
UUID | Tidak didukung | Tidak ada tipe data yang sesuai di MaxCompute. |
FAQ
Apa yang harus saya lakukan jika kesalahan "ODPS-0130071" dilaporkan saat saya membaca data langsung dari Hologres menggunakan MaxCompute?
Masalah
Saat membaca data langsung dari Hologres, muncul kesalahan
ODPS-0130071 Failed to split to equal size...max count: 7777. Contoh:ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: storage/table/src/input_splits_builder.cpp(195): StorageException: Failed to split to equal size, total size: 2143570729934, min size: 268435456, max size: 272629760, max count: 7777, split size: 275629513, split count: 7777Penyebab
Saat MaxCompute membaca data langsung dari Hologres, kebijakan pemisahan mapper default digunakan (volume data input/ukuran split = 256 MB). Hal ini menyebabkan jumlah mapper konkuren yang dihasilkan oleh tugas melebihi batas maksimum 7.777.
CatatanBatas ini mencegah pengiriman tugas yang menghasilkan mapper berlebihan, yang dapat memengaruhi stabilitas file atau koneksi jaringan Hologres.
Solusi
Anda dapat mengatasi kesalahan dengan menyetel parameter berikut.
SET odps.external.holo.mapper.instances=10000; -- Tingkatkan batas atas konkurensi. Nilai maksimum adalah 10.000. SET odps.sql.mapper.split.size=512; -- Sesuaikan konkurensi tugas. Nilai maksimum adalah 512 MB.
Apa yang harus saya lakukan jika pekerjaan SQL yang dijalankan pada tabel eksternal Hologres berjalan lambat?
Mencari data di tabel eksternal MaxCompute menggunakan SDK lambat.
Masalah
Mencari data di tabel eksternal MaxCompute menggunakan SDK lambat.
Solusi
Tabel eksternal hanya mendukung pemindaian tabel penuh, yang lambat. Gunakan tabel internal MaxCompute sebagai gantinya.
Apa yang harus saya lakukan jika kesalahan dilaporkan saat kata kunci digunakan sebagai nama kolom di Hologres?
Masalah
Jika kata kunci digunakan sebagai nama kolom di Hologres tanpa konfigurasi khusus, muncul kesalahan berikut:
ODPS-0123131:User defined function exception - SQLException in nextKeyValueCaused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near ","Solusi
Tambahkan parameter
odps.federation.jdbc.colmappinguntuk memetakan bidang tabel sumber Hologres ke bidang tabel eksternal Hologres.Misalnya, jika tabel sumber Hologres berisi bidang kata kunci
"offset", tambahkan parameter'odps.federation.jdbc.colmapping'='offset:"offset"'saat membuat tabel eksternal Hologres.
Referensi
Untuk informasi selengkapnya tentang masalah umum dengan tabel eksternal Hologres, lihat Masalah umum dengan danau data terpadu dan tabel eksternal.

