MaxCompute, bir Apache Paimon harici tablosu oluşturmanıza ve bu harici tablo ile Object Storage Service (OSS) üzerinde depolanan bir Apache Paimon tablosunun dizini arasında eşleme kurmanıza olanak tanır. Bu sayede, OSS'de depolanan Apache Paimon tablosundaki verilere erişmek için MaxCompute'teki Apache Paimon harici tablosunu kullanabilirsiniz. Bu konuda, Realtime Compute for Apache Flink kullanarak Apache Paimon harici tablosu oluşturma ve MaxCompute'te Apache Paimon harici tablosu kullanarak verileri sorgulama işlemleri açıklanmaktadır.
Arka plan bilgileri
Apache Paimon, yüksek aktarım hızıyla yazma ve düşük gecikme süresiyle sorgulama özellikleri sunan birleşik bir akış ve toplu iş göl depolama biçimidir. Spark, Hive ve Trino gibi yaygın hesaplama motorları, Realtime Compute for Apache Flink ve E-MapReduce içinde Paimon ile sorunsuz bir şekilde entegre olur. Apache Paimon sayesinde, Object Storage Service (OSS) üzerinde hızla bir veri gölü oluşturabilir ve bunu veri gölü analitiği için MaxCompute'e bağlayabilirsiniz. Apache Paimon hakkında daha fazla bilgi için bkz. Apache Paimon belgeleri.
Ön koşullar
İşlemleri gerçekleştirmek için kullandığınız Alibaba Cloud hesabının MaxCompute tabloları oluşturmak üzere CreateTable iznine sahip olması gerekir. Tablo izinleri hakkında daha fazla bilgi için bkz. MaxCompute izinleri.
Bir MaxCompute projesi oluşturulmuştur. Daha fazla bilgi için bkz. Proje oluşturma.
-
OSS etkinleştirilmiştir. Bir paket ve bir dosya dizini oluşturulmuştur. Daha fazla bilgi için bkz. Paket oluşturma.
NotMaxCompute yalnızca belirli bölgelerde dağıtılır. Bölge arası veri bağlantısı sorunlarını önlemek için MaxCompute projenizle aynı bölgede bulunan bir paket kullanmanızı öneririz.
Fully managed Flink etkinleştirilmiştir. Daha fazla bilgi için bkz. Çalışma alanı oluşturma.
Dikkat edilmesi gerekenler
MaxCompute, Apache Paimon harici tablolarından yalnızca veri okuyabilir; bu tablolara veri yazamaz veya Apache Paimon harici tablolarının şema değişikliklerini otomatik olarak senkronize edemez.
Apache Paimon, şema özelliği etkinleştirilmiş MaxCompute projelerini desteklemez.
Apache Paimon harici tabloları kümeleme niteliğini desteklemez.
Apache Paimon harici tabloları, geçmiş sürümlerin verilerini sorgulama ve geriye dönük inceleme gibi özellikleri desteklemez.
1. Adım: Apache Paimon eklentisini MaxCompute projenize yükleyin
Paimon eklentisini MaxCompute projenize yüklemek için aşağıdaki yöntemlerden birini kullanın.
MaxCompute istemcisini (odpscmd) kullanma
MaxCompute istemcisi (odpscmd) aracılığıyla MaxCompute projenize erişin ve paimon_maxcompute_connector.jar dosyasını projeye yüklemek için aşağıdaki komutu çalıştırın.
ADD JAR <path_to_paimon_maxcompute_connector.jar>;
DataWorks konsolunu kullanma
DataWorks konsoluna giriş yapın. Sol gezinme bölmesinde Workspace öğesini tıklayın. Hedef çalışma alanınızın Actions sütununda Quick Access > DataStudio seçeneğini belirleyin.
Data Development sayfasında Create öğesini tıklayın ve New Resource > JAR seçeneğini belirleyin.
-
New resource iletişim kutusunda,
paimon_maxcompute_connector.jardosyasını yüklemek için parametreleri yapılandırın ve ardından Create öğesini tıklayın. Kaynak oluşturma hakkında daha fazla bilgi için bkz. 1. Adım: Kaynak oluşturma veya yükleme.Aşağıdaki parametreleri ayarlayın: Engine Type için MaxCompute seçin; Engine Instance için glz_mc China (Beijing) seçin; Schema için default seçin; Resource Type için JAR seçin ve Upload as ODPS Resource seçeneğini işaretleyin.
Kaynak oluşturulduktan sonra, kaynağın yapılandırma sekmesindeki araç çubuğunda bulunan
simgesini tıklayarak kaynağı geliştirme ortamına gönderin.
2. Adım: Realtime Compute for Apache Flink kullanarak Apache Paimon harici tablosu oluşturun
Bu konudaki en iyi uygulama örneği Realtime Compute for Apache Flink temel alınarak gerçekleştirilir. Realtime Compute for Apache Flink, Apache Paimon dosyalarının verilerini OSS'ye yazar. Realtime Compute for Apache Flink konsolunda bir Apache Paimon katalog oluşturulur ve bu katalog içinde, MaxCompute'in OSS'deki Apache Paimon dosyalarının verilerini okumasına olanak tanıyan bir Apache Paimon tablosu oluşturulur. Ardından MaxCompute, OSS'de depolanan Apache Paimon verilerini okumak için Apache Paimon tablosunu harici tablo olarak kullanır.
Realtime Compute for Apache Flink konsoluna giriş yapın ve bir Script oluşturun. Daha fazla bilgi için bkz. Sorgu Betikleri.
-
Betik düzenleyicide aşağıdaki katalog tanımını ve parametre değerlerini girin. Kodu seçin ve Run öğesini tıklayın.
CREATE CATALOG `<catalog name>` WITH ( 'type' = 'paimon', 'metastore' = 'maxcompute', 'warehouse' = '<warehouse>', 'maxcompute.endpoint' = '<maxcompute.endpoint>', 'maxcompute.project' = '<maxcompute.project>', 'maxcompute.accessid' = '<maxcompute.accessid>', 'maxcompute.accesskey' = '<maxcompute.accesskey>', 'maxcompute.oss.endpoint' = '<maxcompute.oss.endpoint>', 'fs.oss.endpoint' = '<fs.oss.endpoint>', 'fs.oss.accessKeyId' = '<fs.oss.accessKeyId>', 'fs.oss.accessKeySecret' = '<fs.oss.accessKeySecret>' );Aşağıdaki tabloda kodda yer alan parametreler açıklanmaktadır.
Parametre
Zorunlu
Açıklama
catalog name
Evet
Apache Paimon kataloğunun adı. Ad yalnızca harf içerebilir. Bu konuda katalog adı catalogname olarak belirtilmiştir.
type
Evet
Katalog türü. Değer paimon olarak ayarlanmalıdır.
metastore
Evet
Meta veri depolama türü. Değer maxcompute olarak ayarlanmalıdır.
warehouse
Evet
OSS'deki veri ambarı dizini,
oss://<bucket>/<object>biçimindedir.bucket: Oluşturduğunuz OSS paketinin adı.
object: Verilerinizin depolandığı yol.
Paket ve nesne adlarınızı OSS konsolunda görüntüleyebilirsiniz.
maxcompute.endpoint
Evet
MaxCompute hizmetinin uç noktası.
Bu parametreyi, MaxCompute projesini oluştururken seçtiğiniz bölgeye ve ağ bağlantısı türüne göre yapılandırmanız gerekir. Farklı bölgeler ve ağ türlerine karşılık gelen uç noktalar hakkında daha fazla bilgi için bkz. Uç Noktalar.
maxcompute.project
Evet
MaxCompute projesinin adı.
Şema özelliği etkinleştirilmiş MaxCompute projeleri desteklenmez.
maxcompute.accessid
Evet
MaxCompute üzerinde izinlere sahip olan Alibaba Cloud hesabının veya RAM kullanıcısının AccessKey ID'si.
AccessKey ID'yi AccessKey Management sayfasından edinebilirsiniz.
maxcompute.accesskey
Evet
AccessKey ID'ye karşılık gelen AccessKey secret.
maxcompute.oss.endpoint
Hayır
MaxCompute'un eriştiği OSS uç noktası. Bu parametreyi yapılandırmazsanız varsayılan olarak fs.oss.endpoint parametresinin değeri kullanılır.
ÖnemliOSS paketi, MaxCompute projesiyle aynı bölgede bulunur. maxcompute.oss.endpoint parametresini bir dahili uç noktaya ayarlamanızı öneririz. Her bölgedeki farklı ağ türlerine ait OSS uç noktaları hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.
fs.oss.endpoint
Hayır
OSS uç noktası.
warehouse parametresiyle belirtilen OSS paketi, Realtime Compute for Apache Flink çalışma alanıyla aynı bölgede değilse veya başka bir Alibaba Cloud hesabındaki bir OSS paketi kullanılıyorsa bu parametre gereklidir.
NotUç noktayı, OSS paketini oluştururken seçtiğiniz bölgeye ve ağ bağlantısı yöntemine göre yapılandırmanız gerekir. Farklı bölgeler ve ağ türlerine karşılık gelen uç noktalar hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.
fs.oss.accessKeyId
Hayır
OSS üzerinde okuma ve yazma izinlerine sahip olan Alibaba Cloud hesabının veya RAM kullanıcısının AccessKey ID'si.
warehouse parametresiyle belirtilen OSS paketi, Realtime Compute for Apache Flink çalışma alanıyla aynı bölgede değilse veya başka bir Alibaba Cloud hesabındaki bir OSS paketi kullanılıyorsa bu parametre gereklidir.
AccessKey ID'yi AccessKey Management sayfasından edinebilirsiniz.
fs.oss.accessKeySecret
Hayır
AccessKey ID'ye karşılık gelen AccessKey secret.
warehouse parametresiyle belirtilen OSS paketi, Realtime Compute for Apache Flink çalışma alanıyla aynı bölgede değilse veya başka bir Alibaba Cloud hesabındaki bir OSS paketi kullanılıyorsa bu parametre gereklidir.
-
Bir Apache Paimon tablosu oluşturun.
-
test_tbl adlı bir tablo oluşturun.
Script sekmesinde, betik düzenleyicide aşağıdaki ifadeyi çalıştırın. Result sekmesinde bir tamamlanma mesajı görünmesini bekleyin. Bu örnekte test_tbl adlı bir tablo kullanılmaktadır.
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt); -
test_tbl tablosuna veri yazın.
Drafts sayfasında aşağıdaki ifadeleri içeren bir SQL işi oluşturun. Ardından işi dağıtın ve çalıştırın. SQL işleri oluşturma ve çalıştırma hakkında daha fazla bilgi için bkz. İş geliştirme genel bakışı.
-- The checkpoint interval is set to 10s to commit data faster. SET 'execution.checkpointing.interval' = '10s'; INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');NotApache Paimon sonuç tablosu, her kontrol noktası tamamlandığında verileri kaydeder.
Üretim ortamında, kontrol noktası aralığı ve kontrol noktaları arasındaki minimum aralık, gecikme süresine ilişkin iş gereksinimlerinize bağlı olarak değişir. Genellikle 1 ila 10 dakika arasında ayarlanır.
SQL taslağının motor sürümü vvr-8.0.5-flink-1.17 veya üzeri olmalıdır.
-
3. Adım: MaxCompute ile verileri okuyun
-
Yerel istemci (odpscmd) kullanarak bağlanma üzerinden veya MaxCompute SQL deyimlerini yürütebilen başka bir araç kullanarak aşağıdaki komutları çalıştırın:
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true; -
Apache Paimon harici tablosu test_tbl üzerinden verileri sorgulamak için aşağıdaki komutu çalıştırın:
SELECT * FROM test_tbl WHERE dt = '2023-04-21';Aşağıdaki sonuç döndürülür:
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+