Tabel eksternal MaxCompute memungkinkan Anda menjalankan analitik SQL langsung pada data Tablestore tanpa perlu migrasi data. Panduan ini akan memandu Anda membuat tabel eksternal di MaxCompute yang dipetakan ke tabel data Tablestore dalam akun Alibaba Cloud yang sama.
Latar Belakang
MaxCompute adalah layanan komputasi data besar yang sepenuhnya dikelola dan menyediakan gudang data serta analitik berskala petabyte. Dengan satu pernyataan DDL, Anda dapat membuat tabel eksternal di MaxCompute untuk terhubung ke sumber data eksternal guna mengimpor dan mengekspor data. Berbeda dengan tabel MaxCompute asli yang hanya menyimpan data terstruktur, tabel eksternal mendukung baik data terstruktur maupun data tidak terstruktur.
Tablestore dan MaxCompute menggunakan sistem tipe yang berbeda. Tabel berikut mencantumkan pemetaan tipe data antara kedua layanan tersebut.
|
Tablestore |
MaxCompute |
|
STRING |
STRING |
|
INTEGER |
BIGINT |
|
DOUBLE |
DOUBLE |
|
BOOLEAN |
BOOLEAN |
|
BINARY |
BINARY |
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Memiliki ruang kerja MaxCompute. Untuk informasi selengkapnya, lihat Buat ruang kerja.
-
Memiliki pasangan AccessKey untuk otentikasi.
-
Memberikan otorisasi kepada MaxCompute untuk mengakses Tablestore di Konsol RAM. Untuk informasi selengkapnya, lihat Otorisasi lintas akun.
-
Memiliki instans Tablestore dan tabel data yang telah dibuat di Konsol Tablestore. Untuk informasi selengkapnya, lihat buat instans dan buat tabel data.
Panduan ini menggunakan sumber daya contoh berikut:
-
Nama instans: cap1
-
Nama tabel data: vehicle_track
-
Kunci primer: vid (INTEGER), gt (INTEGER)
-
Titik akhir:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.comCatatanGunakan titik akhir pribadi instans Tablestore saat mengaksesnya dari MaxCompute.
-
Konfigurasikan kontrol akses jaringan untuk instans tersebut. Secara default, Tablestore mengizinkan akses dari jaringan apa pun. Pertahankan konfigurasi default sebagai berikut:
Konfigurasinya sebagai berikut: Access Type default adalah Custom. Di bawah Allowed Network Types, opsi VPC, classic network, dan public network dipilih. Di bawah Allowed Source Types, opsi Trusted Gateway (Console) dipilih. Klik Set untuk menyimpan pengaturan.
-
Langkah 1: Instal dan konfigurasikan klien MaxCompute
-
Unduh dan ekstrak klien MaxCompute.
CatatanPastikan Java Runtime Environment (JRE) versi 1.7 atau lebih baru telah diinstal di mesin Anda.
-
Edit file
conf/odps_config.inidengan konfigurasi berikut:# Pasangan AccessKey akun Alibaba Cloud Anda, yang terdiri dari ID AccessKey dan Rahasia AccessKey. Untuk melihat pasangan AccessKey, login ke Konsol Manajemen Alibaba Cloud, arahkan kursor ke foto profil di pojok kanan atas, lalu klik AccessKey Management. access_id=******************* access_key=********************* # Proyek yang ingin Anda akses. project_name=my_project # Titik akhir untuk layanan MaxCompute. end_point=https://service.odps.aliyun.com/api # Titik akhir untuk layanan MaxCompute Tunnel. tunnel_endpoint=https://dt.odps.aliyun.com # URL Logview yang dikembalikan klien setelah pekerjaan dijalankan. Buka URL ini untuk melihat informasi eksekusi pekerjaan secara detail. log_view_host=http://logview.odps.aliyun.com # Menentukan apakah akses melalui HTTPS diaktifkan. https_check=trueCatatanDalam file
odps_config.ini, tanda pagar (#) menunjukkan komentar, sedangkan di klien MaxCompute, tanda hubung ganda (--) menunjukkan komentar. -
Jalankan
bin/odpscmd.batdan masukkanshow tables;.Jika tabel dalam proyek MaxCompute saat ini ditampilkan, berarti konfigurasi sudah benar.
odps@ MCOTStest>show tables; ALIYUN$document@aliyun-test.com:bank_data ALIYUN$document@aliyun-test.com:result_table OK
Langkah 2: Buat tabel eksternal
Buat tabel eksternal MaxCompute bernama ots_vehicle_track yang dipetakan ke tabel data Tablestore vehicle_track.
Tabel data target memiliki properti berikut:
-
Nama instans: cap1
-
Nama tabel data: vehicle_track
-
Kunci primer: vid (INTEGER), gt (INTEGER)
-
Titik akhir:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
CREATE EXTERNAL TABLE IF NOT EXISTS ots_vehicle_track
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double ,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler' -- (1)
WITH SERDEPROPERTIES ( -- (2)
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption', -- (3)
'tablestore.table.name'='vehicle_track' -- (4)
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'; -- (5)
Tabel berikut menjelaskan parameter dalam pernyataan DDL tersebut.
|
Nomor |
Parameter |
Deskripsi |
|
(1) |
com.aliyun.odps.TableStoreStorageHandler |
Penangan penyimpanan bawaan MaxCompute untuk Tablestore. Ini menentukan cara MaxCompute membaca dari dan menulis ke Tablestore. |
|
(2) |
SERDEPROPERITES |
Antarmuka properti serialisasi dan deserialisasi. Dua properti wajib disertakan saat menggunakan TableStoreStorageHandler: |
|
(3) |
tablestore.columns.mapping |
Wajib. Menentukan kolom Tablestore mana saja yang diakses oleh MaxCompute, termasuk kolom kunci primer dan kolom atribut. Nama kolom yang diawali tanda titik dua ( |
|
(4) |
tablestore.table.name |
Nama tabel Tablestore yang akan diakses. Jika tabel yang ditentukan tidak ada, MaxCompute akan mengembalikan error. MaxCompute tidak membuat tabel Tablestore secara otomatis. |
|
(5) |
LOCATION |
Informasi instans Tablestore, termasuk nama instans dan titik akhir. |
Langkah 3: Kueri data Tablestore melalui tabel eksternal
Konkurensi tinggi meningkatkan beban pada instans Tablestore dan dapat menyebabkan latensi lebih tinggi atau kegagalan permintaan untuk beban kerja online. Untuk mengontrol paralelisme, jalankan set odps.sql.mapper.split.size=256;. Nilai yang lebih besar mengurangi konkurensi; nilai yang lebih kecil meningkatkannya. Untuk informasi selengkapnya, lihat SQL Tuning.
Setelah tabel eksternal dibuat, data Tablestore menjadi tersedia dalam ekosistem MaxCompute. Gunakan SQL MaxCompute untuk mengkueri data tersebut.
-- Hitung kecepatan rata-rata dan konsumsi bahan bakar kendaraan dengan VID kurang dari 4 sebelum timestamp 1469171387.
select vid,count(*),avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387 group by vid;
Contoh hasil:
odps@ analysis_vehicle>select vid,count(*), avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387 group by vid;
ID = 20170306160538185gsvlupk2
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.odps.aliyun.com/api&p=analysis_vehicle&i=20170306160538185gsvlupk2&token=ajhxdXZNWWVPcTNrWkFOS0xpSGtoM2tFWGEwPSxPRFBT
09CTzoxNjA0MzM3MzgzMTc0NjE5LDE0ODk0MjExMzgseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL2NJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL2
aGljbGUvaW5zdGFuY2VzLzIwMTcwMzA2MTYwNTM4MTg1Z3N2bHVwazIiXX1dLCJWZXJzaW9uIjoiMSJ9
aGljbGUvaW5zdGFuY2VzLzIwMTcwMzA2MTYwNTM4MTg1Z3N2bHVwazIiXX1dLCJWZXJzaW9uIjoiMSJ9
Job Queueing.
STAGES STATUS TOTAL COMPLETED RUNNING PENDING BACKUP
M1_job_0 .............. TERMINATED 1 1 0 0 0
R2_1_job_0 ............. TERMINATED 1 1 0 0 0
STAGES: 02/02 [==========================>>] 100% ELAPSED TIME: 51.18 s
Summary:
+------------+------------+----------------------+----------------------+
| vid | _c1 | _c2 | _c3 |
+------------+------------+----------------------+----------------------+
| 0 | 47 | 0.11622589796672624 | 6.5155061805308145 |
| 1 | 47 | 0.11200649789552555 | 6.5673983001829885 |
| 2 | 47 | 0.098971763146085 | 6.738738527883797 |
| 3 | 47 | 0.11503916531605494 | 6.6038902692751895 |
+------------+------------+----------------------+----------------------+