MaxCompute, verileri MaxCompute dahili depolamasına taşımadan harici tablolar aracılığıyla Object Storage Service (OSS) içinde saklanan Avro biçimli dosyalardan okuyabilir ve bu dosyalara yazabilir.
AVRO harici tablolar ile şunları yapabilirsiniz:
OSS içindeki Avro dosyalarını doğrudan SQL kullanarak sorgulayın
Verileri MaxCompute'den OSS'ye Avro biçiminde geri yazın
Daha verimli sorgu filtrelemesi için verileri bölümlere ayırın
Özel serileştirme kodu gerekmeden yerleşik açık kaynak veri ayrıştırıcısını kullanın
Sınırlamalar
|
|
|
|
|
|
|
|
|
|
|
|
Desteklenen veri türleri
Aşağıdaki tabloda, AVRO harici tablolar için desteklenen MaxCompute veri türleri listelenmiştir. Tam tür referansı için bkz. Veri türleri (V1.0) ve Veri türleri (V2.0).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AVRO harici tablo oluşturma
Söz dizimi
CREATE EXTERNAL TABLE <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED AS avro
LOCATION '<oss_location>';
Parametreler
Parametre açıklamaları için bkz. Temel söz dizimi parametreleri.
Veri yazma
Yazma söz dizimi için bkz. OSS'ye veri yazma.
Sorgulama ve analiz
SELECT söz dizimi için bkz. OSS'den veri okuma.
Sorgu planı optimizasyonu için bkz. Sorgu optimizasyonu.
Örnek: AVRO harici tablo oluşturma, veri yazma ve sorgulama
Bu örnekte, bölümlendirilmiş bir AVRO harici tablo oluşturma, bölüm meta verilerini içeri aktarma, veri okuma ve yeni bir satır yazma adımları gösterilmektedir.
Önkoşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
MaxCompute projenizle aynı bölgede bir OSS paketi. Bkz. Paket oluşturma ve Klasör yönetimi
Bir Alibaba Cloud hesabı, Resource Access Management (RAM) kullanıcısı veya RAM rolü üzerinden verilen OSS erişim izinleri. Bkz. OSS için STS modunda erişim yetkilendirmesi
MaxCompute projesinde
CreateTableizni. Bkz. MaxCompute izinleri
MaxCompute, OSS'de otomatik klasör oluşturmayı destekler. Bir SQL deyimi harici tablolar ve kullanıcı tanımlı işlevleri (UDF'ler) içeriyorsa, tek bir deyim UDF'leri uygularken tablolardan okuma ve tablolara yazma işlemi gerçekleştirebilir.
Adım 1: Test verilerini yükleyin
OSS konsoluna giriş yapın ve test veri dosyası 20250612TableSink öğesini paketinizdeki external-table-test/avro/dt=20250521/ klasörüne yükleyin. Yükleme talimatları için bkz. Dosya yükleme.
Adım 2: AVRO harici tablo oluşturun
CREATE EXTERNAL TABLE mc_oss_extable_name_avro_pt
(
vehicleId STRING,
recordId STRING,
patientId STRING,
calls STRING,
locationLatitute STRING,
locationLongtitue STRING,
recordTime STRING,
direction STRING
)
PARTITIONED BY (dt STRING)
STORED AS avro
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/external-table-test/avro/';
Adım 3: Bölüm meta verilerini içeri aktarın
Bölümlendirilmiş harici tablolar için, mevcut OSS bölümlerini MaxCompute'e kaydetmek üzere MSCK REPAIR TABLE komutunu çalıştırın:
MSCK REPAIR TABLE mc_oss_extable_name_avro_pt ADD PARTITIONS;
Adım 4: AVRO harici tablodan veri okuyun
SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;
Aşağıdaki sonuç döndürülür:
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| vehicleid | recordid | patientid | calls | locationlatitute | locationlongtitue | recordtime | direction | dt |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| 1 | 12 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | SW | 20250521 |
| 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20250521 |
| 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:01 | NE | 20250521 |
| 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:02 | NE | 20250521 |
| 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:03 | W | 20250521 |
| 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:04 | S | 20250521 |
| 1 | 6 | 9 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:05 | S | 20250521 |
| 1 | 7 | 53 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:06 | N | 20250521 |
| 1 | 8 | 63 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:07 | SW | 20250521 |
| 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:08 | NE | 20250521 |
| 1 | 10 | 31 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:09 | N | 20250521 |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
Adım 5: AVRO harici tabloya veri yazın
INSERT INTO mc_oss_extable_name_avro_pt PARTITION (dt='20250521') VALUES ('1','16','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
Adım 6: Yazılan verileri doğrulayın
SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;
Aşağıdaki sonuç döndürülür; yeni eklenen satır (recordId 16) en üstte yer alır:
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| vehicleid | recordid | patientid | calls | locationlatitute | locationlongtitue | recordtime | direction | dt |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| 1 | 16 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | SW | 20250521 |
| 1 | 12 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | SW | 20250521 |
| 1 | 1 | 51 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:00 | S | 20250521 |
| 1 | 2 | 13 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:01 | NE | 20250521 |
| 1 | 3 | 48 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:02 | NE | 20250521 |
| 1 | 4 | 30 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:03 | W | 20250521 |
| 1 | 5 | 47 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:04 | S | 20250521 |
| 1 | 6 | 9 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:05 | S | 20250521 |
| 1 | 7 | 53 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:06 | N | 20250521 |
| 1 | 8 | 63 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:07 | SW | 20250521 |
| 1 | 9 | 4 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:08 | NE | 20250521 |
| 1 | 10 | 31 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:09 | N | 20250521 |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+