Hologres V3.0.38 sürümünden itibaren, MaxCompute erişimi için Common Table adlı yeni bir yol sunulmaktadır. Bu konu, Common Table kullanarak MaxCompute verilerine nasıl erişileceğini açıklar.
Giriş
Common Table, Hologres'in MaxCompute'den veri okurken C++ tabanlı yerel bir okuyucu kullanmasını sağlar. Bu yöntem, mevcut SQE/HQE mekanizmasına kıyasla aşağıdaki avantajları sunar:
ifadesi desteklenen özellikleri,
ifadesi ise desteklenmeyen özellikleri gösterir.
Karşılaştırma öğesi | SQE/HQE | Common Table |
Performans | Yüksek | Çok yüksek. SQE/HQE mekanizmasına göre %33, açık depolama Storage API üzerinden veri okumaya göre ise %200'den fazla performans artışı sağlar. |
Dinamik veri maskeleme | Tablolar için ayrı yapılandırma gerektirir. | MaxCompute'deki veri maskeleme kurallarını devralır; böylece sorgu sonuçları MaxCompute ile tutarlı olur. |
Şema evrimi | Doğrudan okumayı desteklemez, bu da performansı biraz düşürür. | Yüksek performans için doğrudan okumayı destekler. |
Bekleyen durum şifrelemesi |
|
|
ACID 1.0 tabloları |
|
|
PK Delta Table |
|
|
Append Delta Table |
|
|
İzinler
-
Common Table aracılığıyla MaxCompute foreign/external tablolarına erişmek için tabloda listelenen ilgili izinlere sahip olmanız gerekir. Bu izinlerin nasıl verileceği hakkında daha fazla bilgi için bkz. Komutlar kullanarak kullanıcı izinlerini yönetme.
Hologres V4.0 ve sonraki sürümlerde izin doğrulama değişiklikleri getirildiğini unutmayın.
Tablo türü
İşlem
Gerekli MaxCompute izinleri (Hologres V3.0, V3.1 ve V3.2)
Gerekli MaxCompute izinleri (Hologres V4.0+)
Foreign table
IMPORT FOREIGN SCHEMA
Describe, List
Describe, List
Veri sorgulama
Describe, Select
Select
External table
Meta verileri görüntüleme
Describe
Describe
Veri sorgulama
Describe, Select
Select
Hologres şu anda yalnızca bir MaxCompute Delta Table'ın en son anlık görüntüsünü okumayı destekler.
Hologres'ten MaxCompute Delta Table'a veri yazma işlemi desteklenmemektedir.
Satır düzeyinde izinler ayarlanmış MaxCompute tablolarının sorgulanması desteklenmez.
Özellikler
Özellik | Desteklenen Hologres sürümleri |
MaxCompute sorguları için sütun budama | >=4.1.6 |
MaxCompute Append Delta tablolarını sorgulama | >= 3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Çok sayıda spill edilmemiş dosyadan kaynaklanan hataları çözmek için MaxCompute Delta Tables sorgularında | >= 3.0.41 >= 3.1.10 >= 3.2.0 >= 4.0.0 |
Varsayılan değerler içeren MaxCompute tablolarını okuma | >=3.0.40 >= 3.1.10 >=3.2.0 >=4.0.0 |
Örnek teknik özelliklerine göre bölme boyutunu otomatik olarak belirleyen Auto Split Size | >=3.1.33 >=3.2.0 >=4.0.0 |
TIMESTAMP_NTZ verilerini sorgulama | >= 3.0.41 >= 3.1.10 >=3.2.0 >=4.0.0 |
Delta Tables'daki kümeleme anahtarları ve birincil anahtarlar gibi niteliklerde eşitlik filtreleri için yüklem itme özelliği, filtre verimliliğini ve sorgu performansını artırır. | >= 4.0.6 |
Common Table'ı Etkinleştirme
Senaryonuza uygun bir yöntemi seçin.
-
Oturum düzeyi
-- Enable Common Table at the session level. Execute this along with a query or DML statement. SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Veritabanı düzeyi
-- Enable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Örnek düzeyi
-- Enable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Common Table'ı Devre Dışı Bırakma
-
Oturum düzeyi
-- Disable Common Table at the session level. Execute this with your query or DML statement. SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe'; -
Veritabanı düzeyi
-- Disable Common Table at the database level. ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe'; -
Örnek düzeyi
-- Disable Common Table at the instance level. ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:holo_native,dlf:hqe';
Mevcut erişim yolunu kontrol etme
-
MaxCompute'e erişmek için kullanılan mevcut mekanizmayı kontrol etmek üzere aşağıdaki SQL ifadesini çalıştırın.
odps:common_table,dlf:hqedeğeri, Common Table'ın kullanıldığını gösterir.SHOW hg_experimental_external_catalog_routing; Geçmiş sorgular için yavaş sorgu günlüğündeki
query_extinfoalanını kontrol edin.driver:CommonTableifadesi görünüyorsa, bu sorgular için Common Table kullanılmıştır.
Auto Split Size
Auto Split Size parametresi varsayılan olarak off değerine ayarlıdır. İhtiyaç duyduğunuzda etkinleştirebilirsiniz.
Auto Split Size'ı Etkinleştirme
V4.0+
-
Oturum düzeyi
-- Enable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Veritabanı düzeyi
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on'; -
Örnek düzeyi
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'on';
V4.0 öncesi sürümler
-
Oturum düzeyi
-- Enable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Veritabanı düzeyi
-- Enable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'on'; -
Örnek düzeyi
-- Enable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'on';
Auto Split Size'ı Devre Dışı Bırakma
V4.0+
-
Oturum düzeyi
-- Disable Auto Split Size at the session level SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Veritabanı düzeyi
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off'; -
Örnek düzeyi
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_maxcompute_sdk_auto_split_size = 'off';
V4.0 öncesi sürümler
-
Oturum düzeyi
-- Disable Auto Split Size at the session level SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Veritabanı düzeyi
-- Disable Auto Split Size at the database level ALTER DATABASE <database name> SET hg_experimental_enable_common_table_auto_split_size = 'off'; -
Örnek düzeyi
-- Disable Auto Split Size at the instance level ALTER ROLE ALL SET hg_experimental_enable_common_table_auto_split_size = 'off';
Sütun budama
Hologres V4.1.6 ve sonraki sürümler, veri okuma işlemlerini hızlandırmak için filtreleri veri okuyuculara iten sütun budama özelliğini destekler. Bu özellik, Hologres V4.1'de varsayılan olarak devre dışıdır.
-- Enable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=true');
-- Disable column pruning
SELECT hg_admin_command('set_global_flag','common_table_enable_orc_selective_column_reader=false');