Untuk menghubungkan PrestoDB ke Tablestore, konfigurasikan Catalog dan Schema pada Presto Server. Setelah terhubung, gunakan contoh SQL dalam topik ini untuk melakukan operasi data.
Konfigurasi server
Konfigurasikan Catalog dan Schema pada Presto Server.
Konfigurasi Catalog menentukan pengaturan konektor dan mode konfigurasi Schema. Schema dapat dikonfigurasi secara dinamis menggunakan tabel meta atau secara statis melalui file lokal.
Dengan konfigurasi dinamis (mode tabel meta), tidak diperlukan konfigurasi Schema sebelum memulai Presto Server. Buat Schema dan tabel pemetaan setelah menjalankan command-line interface (CLI) SQL.
Konfigurasi Catalog
File konfigurasi Catalog terletak di etc/catalog/tablestore.properties dalam folder instalasi PrestoDB.
connector.name=tablestore
tablestore.schema-mode=meta-table
#tablestore.schema-mode=file
tablestore.schema-file=/users/test/tablestore/presto/tablestore.schema
tablestore.meta-instance=metastoreinstance
tablestore.endpoint=http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/
tablestore.accessid=****************
tablestore.accesskey=**************************
tablestore.meta-table=meta_table
tablestore.auto-create-meta-table=true
|
Item konfigurasi |
Contoh |
Wajib |
Deskripsi |
|
connector.name |
tablestore |
Ya |
Nama konektor. Harus diatur ke |
|
tablestore.schema-mode |
meta-table |
Ya |
Mode konfigurasi Schema. Nilai yang valid:
|
|
tablestore.schema-file |
/users/test/tablestore/presto/tablestore.schema |
Ya, kondisional |
Diperlukan hanya ketika Path lengkap ke file statis lokal. Untuk informasi selengkapnya, lihat Konfigurasi Schema. |
|
tablestore.meta-instance |
metastoreinstance |
Ya, kondisional |
Diperlukan hanya ketika Instans Tablestore yang digunakan untuk menyimpan metadata. Untuk informasi selengkapnya, lihat Instans. Penting
Pastikan instans yang dikonfigurasi sudah ada di Akun Alibaba Cloud Anda. |
|
tablestore.endpoint |
http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/ |
Ya, kondisional |
Diperlukan hanya ketika Titik akhir instans Tablestore yang digunakan untuk menyimpan metadata. Untuk informasi selengkapnya, lihat Titik akhir. |
|
tablestore.accessid |
|
Ya, kondisional |
Diperlukan hanya ketika ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau pengguna Resource Access Management (RAM) yang memiliki izin akses ke instans metadata. |
|
tablestore.accesskey |
|
Ya, kondisional |
|
|
tablestore.meta-table |
meta_table |
Ya, kondisional |
Diperlukan hanya ketika Nama tabel Tablestore yang digunakan untuk menyimpan metadata. |
|
tablestore.auto-create-meta-table |
true |
Tidak |
Berlaku hanya ketika Menentukan apakah tabel metadata dibuat secara otomatis. Nilai default-nya adalah |
Konfigurasi Schema
Konfigurasikan Schema dalam salah satu dari dua mode: konfigurasi dinamis dengan tabel meta (disarankan) atau konfigurasi statis dengan file lokal.
Konfigurasi dinamis dengan tabel meta
Tidak diperlukan konfigurasi Schema sebelum memulai Presto Server.
Setelah terhubung dan menjalankan CLI SQL, gunakan perintah
create schemadancreate tableuntuk membuat Schema dan tabel pemetaan. Untuk informasi selengkapnya, lihat Buat Schema dan Buat tabel pemetaan.
Konfigurasi file statis lokal
Path ke file statis lokal harus sesuai dengan path lengkap yang ditentukan untuk tablestore.schema-file dalam konfigurasi Catalog.
Buat file di server dengan konten berikut:
{
"account" : {
"accessId" : "xxxxxxxx", ----- <Required> ID AccessKey dari Akun Alibaba Cloud atau pengguna RAM.
"accessKey" : "xxxxxxxxxxxxxxx", ----- <Required> Rahasia AccessKey dari Akun Alibaba Cloud atau pengguna RAM.
},
"instances" : {
"mydb" : { ----- <Required> Nama Schema di PrestoDB.
"instanceName" : "myinstance", ----- <Required> Nama instans Tablestore.
"endpoint" : "http://myinstance.cn-hangzhou.ots.aliyuncs.com", ----- <Required> Titik akhir instans Tablestore.
"tables": {
"mytable" : { ----- <Required> Nama tabel di PrestoDB.
"originName" : "SampleTable", ----- <Optional> Nama tabel yang sesuai di Tablestore (case-sensitive). Jika tidak dikonfigurasi, nilainya sama dengan nama tabel di Presto.
"columns" : [ ----- <Required> Metadata tabel. Harus mencakup semua kolom kunci primer, dan urutan kolom kunci primer harus sama dengan urutan kunci primer tabel tersebut.
{"name" : "gid", "type" : "bigint"},
{"name" : "uid", "type" : "bigint"},
{"name" : "c1", "type" : "boolean", "originName" : "col1"},
{"name" : "c2", "type" : "bigint", "originName" : "col2"},
{"name" : "C3", "type" : "varchar", "originName" : "col3"}
]
},
"anotherTable" : {
"originName" : "sampleTable2",
"columns" : [
{"name" : "gid", "type" : "bigint"},
{"name" : "uid", "type" : "bigint"},
{"name" : "a", "type" : "varchar"},
{"name" : "b", "type" : "varchar"},
{"name" : "c", "type" : "boolean"},
{"name" : "d", "type" : "bigint"},
{"name" : "e", "type" : "varchar"}
]
}
}
}
}
}
|
Item konfigurasi |
Wajib |
Deskripsi |
|
|
account |
accessId |
Ya |
ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud atau pengguna RAM. |
|
accessKey |
Ya |
||
|
instances(map(<schema_name> -> <schema_info>)) |
Ya |
Peta JSON yang memetakan nama Schema ke informasi Schema. Penting
Nama Schema tidak case-sensitive di PrestoDB. |
|
|
<schema_info> |
instanceName |
Ya |
Nama instans Tablestore yang sesuai dengan Schema ini. Untuk informasi selengkapnya, lihat Instans. |
|
endpoint |
Ya |
Titik akhir instans Tablestore. Untuk informasi selengkapnya, lihat Titik akhir. |
|
|
tables(map(<table_name> -> <table_info>)) |
Ya |
Daftar tabel yang dimasang ke PrestoDB. Penting
|
|
|
<table_info> |
originName |
Tidak |
Nama tabel aktual di Tablestore.
Jika konektor tidak dapat menemukan tabel yang sesuai di Tablestore, operasi baca dan tulis pada tabel tersebut akan gagal. |
|
columns(list([<column_info>])) |
Ya |
Metadata tabel, termasuk semua kolom yang didefinisikan. Penting
|
|
|
<column_info> |
name |
Ya |
Nama kolom. Penting
Nama kolom tidak case-sensitive di PrestoDB. |
|
type |
Ya |
Tipe kolom. Tipe PrestoDB yang didukung dan dipetakan ke tipe kolom Tablestore: Bigint, Varchar, Varbinary, Double, dan Boolean. Penting
Tipe kolom di PrestoDB harus sesuai dengan tipe kolom di Tablestore. |
|
|
originName |
Tidak |
Nama kolom yang sesuai di tabel data Tablestore. |
|
Contoh SQL umum
Contoh SQL berikut menunjukkan cara bekerja dengan data Tablestore melalui PrestoDB. Semua contoh menggunakan Schema bernama testdb yang terhubung ke instans Tablestore myinstance, serta tabel pemetaan bernama exampletable dengan skema (pk varchar, c1 double, c2 varchar, c3 varchar).
Buat Schema
Schema mengonfigurasi akses ke instans Tablestore dan menangani otentikasi. Contoh berikut membuat Schema bernama testdb untuk mengakses instans Tablestore myinstance.
CREATE SCHEMA tablestore.testdb
WITH (
endpoint = 'https://myinstance.cn-hangzhou.ots.aliyuncs.com',
instance_name = 'myinstance',
access_id = '************************',
access_key = '********************************'
);
|
Parameter |
Contoh |
Wajib |
Deskripsi |
|
endpoint |
https://myinstance.cn-hangzhou.ots.aliyuncs.com |
Ya |
Titik akhir instans Tablestore. Untuk informasi selengkapnya, lihat Titik akhir. |
|
instance_name |
myinstance |
Ya |
Nama instans Tablestore. Untuk informasi selengkapnya, lihat Instans. |
|
access_id |
**** |
Ya |
ID AccessKey dari Akun Alibaba Cloud atau pengguna RAM. |
|
access_key |
** |
Ya |
Rahasia AccessKey dari Akun Alibaba Cloud atau pengguna RAM. |
Buat tabel pemetaan
Tabel pemetaan bersesuaian dengan tabel fisik di instans Tablestore.
Perhatikan hal-hal berikut saat membuat tabel pemetaan:
Pastikan tipe bidang di tabel pemetaan sesuai dengan tipe di tabel data Tablestore. Untuk informasi selengkapnya, lihat Pemetaan tipe bidang.
Nama tabel pemetaan harus sesuai dengan nama tabel di Tablestore.
Properti
table_namedalam pernyataan CREATE TABLE memetakan tabel PrestoDB ke tabel aktual di Tablestore. Beberapa tabel pemetaan dengan nama berbeda dapat mengarah ke tabel data Tablestore yang sama.Tabel pemetaan harus mencakup semua kolom kunci primer dari tabel data, tetapi hanya boleh mencakup sebagian kolom atribut.
Nama dan urutan kolom kunci primer di tabel pemetaan harus sesuai dengan tabel data Tablestore. Petakan setiap kolom atribut ke padanannya di Tablestore menggunakan parameter
origin_name.
Contoh berikut membuat tabel pemetaan bernama exampletable yang dipetakan ke tabel data Tablestore dengan nama yang sama.
CREATE TABLE if not exists exampletable
(
pk varchar,
c1 double with (origin_name = 'col1'),
c2 varchar with (origin_name = 'col2'),
c3 varchar with (origin_name = 'col3')
) WITH (
table_name = 'exampletable'
);
Operasi Schema
Setelah membuat Schema, daftarkan semua Schema atau pilih Schema untuk digunakan.
Daftar semua Schema
show schemas;
Contoh respons:
Schema
--------------------
information_schema
testdb
testdb1
(3 rows)
Gunakan Schema
Pilih Schema sebelum melakukan operasi pada tabel-tabelnya.
Pilih Schema sebelum melakukan operasi pada tabel-tabel di dalamnya.
Contoh berikut memilih Schema testdb.
use testdb;
Contoh respons:
USE
Operasi tabel pemetaan
Setelah membuat tabel pemetaan, daftarkan tabel dalam Schema, lihat metadata tabel, atau hapus tabel pemetaan.
Daftar tabel dalam Schema
Setelah memilih Schema, daftarkan tabel-tabelnya.
show tables;
Contoh respons:
Table
-----------------
exampletable
sampletable
sampletabletest
table1
testtable
(5 rows)
Deskripsikan tabel
Contoh berikut mendeskripsikan tabel exampletable.
describe exampletable;
Contoh respons:
Column | Type | Extra | Comment
--------+---------+-------+---------
pk | varchar | |
c1 | double | |
c2 | varchar | |
c3 | varchar | |
(4 rows)
Hapus tabel pemetaan
Contoh berikut menghapus tabel pemetaan table1.
drop table table1;
Contoh respons:
DROP TABLE
Operasi data
Setelah membuat tabel pemetaan, tulis data ke dan baca data dari tabel Tablestore yang sesuai.
PrestoDB tidak mendukung operasi UPDATE atau DELETE pada tabel Tablestore.
Tulis data
-
Masukkan satu baris
Contoh berikut memasukkan satu baris ke
exampletable.insert into exampletable values('101', 22.0, 'Mary', '10002');Contoh respons:
INSERT: 1 row -
Impor data batch
PentingSebelum mengimpor data secara batch, pastikan tabel tujuan sudah ada dan skemanya sesuai dengan tabel sumber.
Contoh berikut menyalin baris-baris di mana
c1 < 50dariexampletablekesampletable.insert into sampletable select pk, c1, c2, c3 from exampletable where c1 < 50;Contoh respons:
INSERT: 3 rows
Baca data
-
Kueri semua baris
Contoh berikut membaca semua data dari
exampletable.select * from exampletable;Contoh respons:
pk | c1 | c2 | c3 -----+------+------+------- 100 | 11.0 | Lily | 10001 101 | 22.0 | Mary | 10002 102 | 12.0 | Jim | 10003 (3 rows) -
Kueri baris dengan kondisi
Contoh berikut mengkueri baris-baris di
exampletabledi manac1 < 15danc3 = '10001'.select * from exampletable where c1 < 15 and c3 = '10001';Contoh respons:
pk | c1 | c2 | c3 -----+------+------+------- 100 | 11.0 | Lily | 10001 (1 row)
Analisis data
-
Hitung rata-rata kolom
Contoh berikut menghitung rata-rata kolom
c1diexampletable.select avg(c1) as Average from exampletable;Contoh respons:
Average --------- 15.0 (1 row) -
Hitung total baris
Contoh berikut menghitung semua baris di
exampletable.select count(*) as total from exampletable;Contoh respons:
total ------- 3 (1 row)