SequenceFile harici tablolar, Hadoop SequenceFile biçiminde Object Storage Service (OSS) üzerinde depolanan verileri önceden MaxCompute'e yüklemeden doğrudan sorgulamanıza ve yazmanıza olanak tanır. Bu özellik, mevcut Hadoop veya Hive iş yüklerinizi MaxCompute üzerinden erişmek istediğinizde veya sistemler arasında veri paylaşmanız gerektiğinde kullanışlıdır.
Sınırlamalar
|
|
|
|
|
|
|
|
|
|
|
|
Desteklenen veri türleri
SequenceFile harici tablolar için aşağıdaki MaxCompute veri türleri desteklenir. Tam tür belirtimi için bkz. Veri türleri (Sürüm 1,0) ve Veri türleri (Sürüm 2,0).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Harici tablo oluşturun
Söz dizimi
CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>)]
STORED AS sequencefile
LOCATION '<oss_location>';
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tam parametre referansı için bkz. Temel söz dizimi parametreleri.
Veri yazın
Verileri MaxCompute'ten OSS'ye yazma söz dizimi için bkz. OSS'ye veri yazma.
Verileri sorgulayın ve analiz edin
SELECT söz dizimi için bkz. OSS'den veri okuma.
Sorgu performansı ipuçları için bkz. Sorgu optimizasyonu.
Örnek: Bir SequenceFile harici tablosu oluşturma, sorgulama ve yazma
Bu örnek, bölümlendirilmiş bir SequenceFile harici tablosu oluşturma, OSS'den bir test veri kümesi yükleme, verileri sorgulama ve yeni bir satır yazma sürecini adım adım gösterir.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir MaxCompute projesi. Bkz. Proje oluşturun.
MaxCompute projenizle aynı bölgede bir OSS paketi ve klasörü. Bkz. Paket oluşturun ve Klasörleri yönetin.
Bir Alibaba Cloud hesabı, Resource Access Management (RAM) kullanıcı veya RAM rolü aracılığıyla OSS erişim izinleri. Bkz. OSS için STS modunda erişim yetkilendirmesi.
MaxCompute projenizde
CreateTableizni. Bkz. MaxCompute izinleri.
MaxCompute, OSS'de otomatik klasör oluşturmayı destekler. Bir SQL ifadesi harici tablolar ve kullanıcı tanımlı işlevleri (UDF'ler) içeriyorsa, tek bir ifade kullanarak tablolardan okuyabilir, tablolara yazabilir ve UDF'leri kullanabilirsiniz. Ayrıca, aşağıdaki ifadeleri çalıştırmadan önce klasörü OSS konsolunda manuel olarak da oluşturabilirsiniz.
Adım 1: Test verilerini yükleyin
OSS konsoluna giriş yapın ve 20250611TableSink test dosyasını OSS paketinizdeki external-table-test/sequence/dt=20250521/ klasörüne yükleyin. Yükleme talimatları için bkz. OSS'ye dosya yükleme.
Adım 2: Harici tabloyu oluşturun
Test verilerinin depolandığı OSS yolunu işaret eden bölümlendirilmiş bir SequenceFile harici tablosu oluşturun.
CREATE EXTERNAL TABLE mc_oss_extable_name_sequencefile1_pt
(
vehicleId STRING,
recordId STRING,
patientId STRING,
calls STRING,
locationLatitute STRING,
locationLongtitue STRING,
recordTime STRING,
direction STRING
)
PARTITIONED BY (dt STRING)
STORED AS sequencefile
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/external-table-test/sequence/';
Adım 3: Bölüm verilerini içe aktarın
Tablo bölümlendirildiğinden, OSS'de zaten mevcut olan bölümleri algılamak ve kaydetmek için MSCK REPAIR TABLE komutunu çalıştırın.
MSCK REPAIR TABLE mc_oss_extable_name_sequencefile1_pt ADD PARTITIONS;
Adım 4: Verileri sorgulayın
SELECT * FROM mc_oss_extable_name_sequencefile1_pt WHERE dt=20250521;
Sorgu, test veri kümesinden 11 satır döndürü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: Veri yazın
Bölüme yeni bir satır ekleyin.
INSERT INTO mc_oss_extable_name_sequencefile1_pt PARTITION (dt='20250521')
VALUES
('1','16','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
Adım 6: Yazmayı doğrulayın
Doğru şekilde yazıldığını onaylamak için az önce eklediğiniz satırı sorgulayın.
SELECT * FROM mc_oss_extable_name_sequencefile1_pt WHERE dt=20250521 AND recordId='16';
Beklenen çıktı:
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| vehicleid | recordid | patientid | calls | locationlatitute | locationlongtitue | recordtime | direction | dt |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
| 1 | 16 | 76 | 1 | 46.81006 | -92.08174 | 9/14/2014 0:10 | SW | 20250521 |
+------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
Sonraki adımlar
Harici tabloların kullanıcı tanımlı işlevlerle (UDF'ler) nasıl çalıştığını öğrenmek için bkz. Temel söz dizimi parametreleri.
Büyük SequenceFile veri kümelerinde sorgu performansını optimize etmek için bkz. Sorgu optimizasyonu.