Tüm Ürünler
Search
Belge Merkezi

MaxCompute:Paimon harici tablo

Son Güncelleme:Oct 04, 2026

MaxCompute, Object Storage Service (OSS) içinde depolanan bir Paimon tablo dizinine eşlenen ve bu verilere erişmenizi sağlayan bir Paimon harici tablo oluşturmanıza olanak tanır. Bu konuda, Paimon harici tablonun nasıl oluşturulacağı ve MaxCompute ile nasıl erişileceği açıklanmaktadır.

Genel Bakış

Apache Paimon hem akış hem de toplu işleme için yüksek aktarım hızında yazma ve düşük gecikme süresinde sorgulama özellikleri sunan bir veri gölü depolama formatıdır. Spark, Hive ve Trino gibi yaygın hesaplama motorlarıyla tam entegre olmasının yanı sıra Realtime Compute for Apache Flink ve E-MapReduce ile de entegredir. Apache Paimon kullanarak OSS üzerinde hızlıca bir veri gölü oluşturabilir ve bunu MaxCompute'a bağlayarak veri gölü analitiği yapabilirsiniz. Meta veri filtreleme özelliği, okuma işlerinde gereksiz OSS dizin dosyalarını atlayarak sorgu performansını daha da artırır.

Sınırlamalar

  • Şema sınırlamaları

    Paimon harici tablolar, temel alınan Paimon dosyalarındaki şema değişikliklerini yansıtacak şekilde şemalarını otomatik olarak güncellemez.

  • Tablo özelliği sınırlamaları

    • Paimon harici tabloda küme özellikleri ayarlayamazsınız.

    • Birincil anahtar ayarlayamazsınız.

    • Paimon harici tablolar, Paimon tablo özelliklerinin doğrudan iletilmesini desteklemez.

  • Veri yazma, güncelleme ve sorgulama işlemleri

    • Paimon harici tabloya veri yazmak için INSERT INTO veya INSERT OVERWRITE ifadelerini kullanabilirsiniz.

    • Dinamik parça (bucket) tablolarına ve çapraz bölüm (cross-partition) tablolarına veri yazılması desteklenmez.

    • Paimon harici tablolar üzerinde UPDATE ve DELETE işlemleri desteklenmez.

    • Paimon harici tablolar için geçmiş veri sürümlerine erişen zaman yolculuğu (time-travel) sorguları desteklenmez.

    • Paimon harici tablolara doğrudan veri yazmayın. Bunun yerine, UNLOAD gibi yöntemler kullanarak verileri OSS'e dışa aktarın.

  • MaxCompute ve OSS aynı bölgede bulunmalıdır.

  • Daha fazla bilgi için bkz. Desteklenen veri türleri.

İzin açıklaması

  • OSS harici tablolarına erişirken, Alibaba Cloud hesabı, RAM kullanıcı veya RAM rolü kullanmanızdan bağımsız olarak verilere odps.properties.rolearn parametresinde belirtilen rol aracılığıyla erişilir. Bu nedenle, bir RAM rolü oluşturmalı ve bu role hedef OSS paket erişim izinlerini vermelisiniz; ardından rolün ARN değerini odps.properties.rolearn parametresinde yapılandırmalısınız. Daha fazla bilgi için bkz. Parametreler.

  • İş gereksinimlerinize göre aynı hesap veya farklı hesaplar arası erişimi yetkilendirebilirsiniz. Daha ayrıntılı erişim denetimi için özel bir yetkilendirme ilkesi kullanmanızı öneririz. Daha fazla bilgi için bkz. Harici veri kaynakları için yetkilendirme.

Paimon harici tablo oluşturma

Sözdizimi

Farklı formatlarda harici tablo oluşturma sözdizimi hakkında ayrıntılı bilgi için bkz. OSS harici tabloları.

CREATE EXTERNAL TABLE  [if NOT EXISTS] <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
  'odps.properties.rolearn'='acs:ram::<uid>:role/<role_name>'
)
LOCATION '<oss_location>';

Ortak parametreler

Ortak parametreler hakkında daha fazla bilgi için bkz. Temel sözdizimi parametreleri.

Veri yazma

MaxCompute'daki yazma sözdizimi hakkında ayrıntılı bilgi için bkz. Yazma sözdizimi.

Veri sorgulama ve analiz etme

  • Paimon tabloları için veri parçalama (split) mantığı, yerel MaxCompute tablolarından farklıdır. Paimon formatı, dosya organizasyonu ve parçalama için kendi dahili mekanizmalarına sahiptir ve bu mekanizmalar MaxCompute parametreleriyle tam olarak uyumlu değildir.

  • SELECT sözdizimi için bkz. Sorgu sözdizimi.

  • Sorgu planlarını optimize etmek için bkz. Sorgu optimizasyonu.

  • Hatalı satır atlama (bad row skipping) hakkında daha fazla bilgi için bkz. BadRowSkipping.

Örnek

Adım 1: Ön koşullar

  1. Bir MaxCompute projesi oluşturdunuz.

  2. Bir OSS paketi ve dizini hazırladınız. Daha fazla bilgi için bkz. Paket oluşturma ve Dizin yönetimi.

    Paketinizin MaxCompute projenizle aynı bölgede olduğundan emin olun.
  3. İzinleri verin.

    1. OSS'e erişim iznine sahipsiniz. Bir OSS harici tablosuna Alibaba Cloud hesabı, RAM kullanıcı veya RAM rolü kullanarak erişebilirsiniz. İzin verme hakkında daha fazla bilgi için bkz. OSS için STS modu yetkilendirme.

    2. MaxCompute projesinde CreateTable iznine sahipsiniz. Tablo ile ilgili izinler hakkında daha fazla bilgi için bkz. MaxCompute izinleri.

Adım 2: Flink'te veriyi hazırlama

Bir Paimon katalog ve Paimon tablosu oluşturun, ardından tabloya veri ekleyin.

Not

OSS'te zaten Paimon tablo veriniz varsa bu adımı atlayabilirsiniz.

  1. Bir Paimon dosya sistemi kataloğu oluşturma

    1. real-time compute for Apache Flink konsolu adresine giderek oturum açın ve sol üst köşeden bir bölge seçin.

    2. Hedef çalışma alanının adına tıklayın ve ardından sol gezinme bölmesinde Data Management seçeneğini belirleyin.

    3. catalog list sayfasında Create Catalog öğesine tıklayın. Create Catalog iletişim kutusunda Apache Paimon seçeneğini belirleyin, Next seçeneğine tıklayın ve aşağıdaki parametreleri yapılandırın:


      Parameter


      Required


      Description


      metastore


      Yes


      Meta depo türü. Bu örnekte filesystem seçeneğini belirleyin.


      catalog name


      Yes


      Özel bir katalog adı, örneğin paimon-catalog.


      warehouse


      Yes


      OSS'teki depo dizini. Bu örnekte dizin oss://paimon-fs/paimon-test/ şeklindedir.


      fs.oss.endpoint


      Yes


      OSS hizmetinin uç noktası. Örneğin, China (Hangzhou) bölgesi için uç nokta oss-cn-hangzhou-internal.aliyuncs.com şeklindedir.


      fs.oss.accessKeyId


      Yes


      OSS'e erişmek için kullanılan AccessKey ID.


      fs.oss.accessKeySecret


      Yes


      OSS'e erişmek için kullanılan AccessKey secret.

  2. Bir Paimon tablosu oluşturma

    1. real-time compute for Apache Flink konsolu adresine giderek oturum açın ve sol üst köşeden bir bölge seçin.

    2. Hedef çalışma alanı adına tıklayın ve ardından sol gezinme bölmesinde Development > Data Query seçeneğini belirleyin.

    3. Query Script sekmesinde yeni bir sorgu betiği oluşturmak için image simgesine image tıklayın.

      Aşağıdaki komutları girin ve çalıştırın:

      CREATE TABLE `paimon_catalog`.`default`.test_tbl (
          id BIGINT,
          data STRING,
          dt STRING,
          PRIMARY KEY (dt, id) NOT ENFORCED
      ) PARTITIONED BY (dt);
      
      INSERT INTO `paimon-catalog`.`default`.test_tbl VALUES (1,'CCC','2024-07-18'), (2,'DDD','2024-07-18');
  3. INSERT INTO ... VALUES ... ifadesini çalıştıranlar gibi otomatik olarak tamamlanan SQL işleri için aşağıdaki işlemleri gerçekleştirin:

    1. Hedef çalışma alanının adına tıklayın. Sol gezinme bölmesinde O&M > Deployments seçeneğini belirleyin.

    2. Deployments sayfasında hedef işe tıklayarak deployment details sayfasını açın.

    3. Parameters bölümünde Edit seçeneğine tıklayın. Ardından, Other Configuration bölümünde execution.checkpointing.checkpoints-after-tasks-finish.enabled: true değerini ayarlayın ve değişikliklerinizi kaydedin.

      Bir iş için çalışma zamanı parametrelerini yapılandırma hakkında daha fazla bilgi için bkz. İş dağıtım bilgilerini yapılandırma.

Adım 3: Paimon harici tablo oluşturma

Paimon harici tablo oluşturmak için MaxCompute'ta aşağıdaki SQL ifadesini çalıştırın:

CREATE EXTERNAL TABLE oss_extable_paimon_pt
(
    id BIGINT,
    data STRING
)
PARTITIONED BY (dt STRING )
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
    'odps.properties.rolearn'='acs:ram::<uid>:role/<role_name>'
)
LOCATION 'oss://oss-cn-<your region>-internal.aliyuncs.com/<table_path>'
;

Yukarıdaki ifadede table_path, Flink'te oluşturduğunuz Paimon tablosunun yoludur; örneğin paimon-fs/paimon-test/default.db/test_tbl. Bu yolu bulmak için aşağıdaki adımları uygulayın:

  1. real-time compute for Apache Flink konsolu adresine giderek oturum açın ve sol üst köşeden bir bölge seçin.

  2. Hedef çalışma alanının adına tıklayın ve ardından sol gezinme bölmesinde Data Management seçeneğini belirleyin.

  3. Catalogs sayfasında hedef katalog altında default seçeneğine tıklayın. Varsayılan sayfada hedef tabloyu bulun ve Actions sütunundaki View seçeneğine tıklayın.

  4. Table Schema sekmesinde, Properties bölümündeki path parametresinin değerini kopyalayın. table_path için oss:// ön eki olmadan yolu girin.

Adım 4: Bölüm verilerini yükleme

Oluşturduğunuz OSS harici tablosu bölümlenmiş bir tabloy ise bölümlerini yüklemeniz gerekir. Daha fazla bilgi için bkz. OSS harici tabloları.

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

Adım 5: Paimon harici tabloyu sorgulama

oss_extable_paimon_pt Paimon harici tablosunu sorgulamak için MaxCompute'ta aşağıdaki komutları çalıştırın.

SET odps.sql.common.table.planner.ext.hive.bridge = true;
SET odps.sql.hive.compatible = true;
SELECT * FROM oss_extable_paimon_pt WHERE dt='2024-07-18';

Aşağıdaki sonuç döndürülür:

+------------+------------+------------+
| id         | data       | dt         | 
+------------+------------+------------+
| 1          | CCC        | 2024-07-18 | 
| 2          | DDD        | 2024-07-18 | 
+------------+------------+------------+
Not

Paimon dosyalarındaki şema ile harici tablo şeması farklılık gösteriyorsa:

  • Sütun sayısı uyuşmazlığı: Paimon dosyaları harici tablo DDL'sinden daha az sütun içeriyorsa MaxCompute eksik sütunları NULL olarak okur. Dosyalar daha fazla sütun içeriyorsa MaxCompute bunları yoksayar.

  • Sütun türü uyuşmazlığı: Bir Paimon STRING sütunundaki verileri MaxCompute INT sütununa okuyamazsınız. INT sütunundaki verileri STRING sütununa okuma işlemi desteklenir ancak önerilmez.

Desteklenen veri türleri

MaxCompute veri türleri hakkında daha fazla bilgi için bkz. Veri türü sürümleri 1,0 ve 2,0.

Paimon veri türü

MaxCompute 2,0 veri türü

Okuma/yazma desteği

Açıklama

TINYINT

TINYINT

Desteklenir

8 bitlik işaretli tamsayı.

SMALLINT

SMALLINT

Desteklenir

16 bitlik işaretli tamsayı.

INT

INT

Desteklenir

32 bitlik işaretli tamsayı.

BIGINT

BIGINT

Desteklenir

64 bitlik işaretli tamsayı.

BINARY(MAX_LENGTH)

BINARY

Desteklenir

İkili veri türü. Geçerli maksimum uzunluk 8 MB'dir.

FLOAT

FLOAT

Desteklenir

32 bitlik ikili kayan noktalı sayı.

DOUBLE

DOUBLE

Desteklenir

64 bitlik ikili kayan noktalı sayı.

DECIMAL(precision,scale)

DECIMAL(precision,scale)

Desteklenir

Kesin ondalık sayısal tür. Varsayılan değer decimal(38,18) şeklindedir. Hassasiyet ve ölçek değerlerini özelleştirebilirsiniz.

  • precision: Maksimum basamak sayısı. Geçerli değerler 1 ile 38 arasındadır.

  • scale: Ondalık kısmındaki basamak sayısı. Geçerli değerler 0 ile 18 arasındadır.

VARCHAR(n)

VARCHAR(n)

Desteklenir

Değişken uzunluklu karakter türü. n uzunluğu belirtir ve 1 ile 65.535 arasında değişir.

CHAR(n)

CHAR(n)

Desteklenir

Sabit uzunluklu karakter türü. n uzunluğu belirtir ve 1 ile 255 arasında değişir.

VARCHAR(MAX_LENGTH)

STRING

Desteklenir

Dize türü. Geçerli maksimum uzunluk 8 MB'dir.

DATE

DATE

Desteklenir

Tarih türü. Format yyyy-mm-dd şeklindedir.

TIME, TIME(p)

Desteklenmez

Desteklenmez

Paimon TIME veri türü, saat dilimi içermeyen, saat, dakika ve saniyeden oluşan ve nanosaniye hassasiyetine sahip bir zamanı temsil eder.

TIME(p), 0 ile 9 arasında kesirli saniye hassasiyetini belirtir. Varsayılan değer 0'dır.

MaxCompute'ta karşılık gelen bir tür yoktur.

TIMESTAMP, TIMESTAMP(p)

TIMESTAMP_NTZ

Desteklenir

Saat dilimi içermeyen ve nanosaniye hassasiyetine sahip bir zaman damgası türü.

Bu veri türünü okumak için aşağıdaki komutu çalıştırarak yerel JNI köprüsünü devre dışı bırakmanız gerekir: SET odps.sql.common.table.jni.disable.native=true;

TIMESTAMP WITH LOCAL TIME_ZONE(9)

TIMESTAMP

Desteklenir

  • Nanosaniye hassasiyetine sahip bir zaman damgası türü. Format yyyy-mm-dd hh:mm:ss.xxxxxxxxx şeklindedir.

  • Paimon kaynak tablosundaki düşük hassasiyetli TIMESTAMP türleri için MaxCompute yazma sırasında değerleri keser. 0-3 hassasiyeti için veriler 3 basamağa, 4-6 hassasiyeti için 6 basamağa, 7-9 hassasiyeti için 9 basamağa kesilir.

TIMESTAMP WITH LOCAL TIME_ZONE(9)

DATETIME

Desteklenmez

Nanosaniye hassasiyetine sahip bir zaman damgası türü.

Format yyyy-mm-dd hh:mm:ss.xxxxxxxxx şeklindedir.

BOOLEAN

BOOLEAN

Desteklenir

BOOLEAN türü.

ARRAY

ARRAY

Desteklenir

Karmaşık bir tür.

MAP

MAP

Desteklenir

Karmaşık bir tür.

ROW

STRUCT

Desteklenir

Karmaşık bir tür.

MULTISET<t>

Desteklenmez

Desteklenmez

MaxCompute'ta karşılık gelen bir tür yoktur.

VARBINARY, VARBINARY(n), BYTES

BINARY

Desteklenir

Değişken uzunluklu ikili dizelerin veri türü.

Sorun giderme

Paimon harici tablo okunurken kSIGABRT hatası

  • Hata mesajı:

    ODPS-0123144: Fuxi job failed - kSIGABRT(errCode:6) at Odps/*****_SQL_0_1_0_job_0/M1@f01b17437.cloud.eo166#3. 
      Detail error msg: CRASH_CORE, maybe caused by jvm crash, please check your java udf/udaf/udtf. 
      | fatalInstance: Odps/*****_SQL_0_1_0_job_0/M1#0_0 
  • Neden:

    Bu hata, JNI modunda bir TIMESTAMP_NTZ sütunu okuduğunuzda oluşur.

  • Çözüm:

    Sorgunuzdan önce aşağıdaki komutu çalıştırarak JNI köprüsünü devre dışı bırakın: SET odps.sql.common.table.jni.disable.native=true;

İlgili makaleler

MaxCompute Paimon harici tablolarını yönetmek için özel bir Flink kataloğu da kullanabilirsiniz. Bu sayede Flink kullanarak veri yazabilir ve MaxCompute'ta sorgulayabilirsiniz. Daha fazla bilgi için bkz. Flink kullanarak MaxCompute Paimon harici tablo oluşturma.