Aracılığıyla paylaş


Azure Synapse Analytics’teki ayrılmış SQL havuzu için veri yükleme stratejileri

Geleneksel SMP ayrılmış SQL havuzları, verileri yüklemek için Ayıklama, Dönüştürme ve Yükleme (ETL) işlemi kullanır. Azure Synapse Analytics içindeki Synapse SQL, işlem ve depolama kaynaklarının ölçeklenebilirlik ve esnekliğinden yararlanan dağıtılmış sorgu işleme mimarisini kullanır.

Ayıklama, Yükleme ve Dönüştürme (ELT) işlemi kullanmak yerleşik dağıtılmış sorgu işleme özelliklerini kullanır ve yüklemeden önce veri dönüşümü için gereken kaynakları ortadan kaldırır.

Ayrılmış SQL havuzları bcp ve SqlBulkCopy API gibi popüler SQL Server seçenekleri de dahil olmak üzere birçok yükleme yöntemini desteklese de, verileri yüklemenin en hızlı ve en ölçeklenebilir yolu PolyBase dış tabloları ve COPY deyimidir.

PolyBase ve COPY deyimiyle, T-SQL dili aracılığıyla Azure Blob depolamada veya Azure Data Lake Store'da depolanan dış verilere erişebilirsiniz. Yükleme sırasında en fazla esneklik için COPY deyimini kullanmanızı öneririz.

ELT nedir?

Ayıklama, Yükleme ve Dönüştürme (ELT), verilerin kaynak sistemden ayıklandığı, ayrılmış bir SQL havuzuna yüklendiği ve sonra dönüştürüldüğü bir işlemdir.

ELT'yi uygulamak için temel adımlar şunlardır:

  1. Kaynak verileri metin dosyalarına ayıklayın.
  2. Verileri Azure Blob depolama alanına veya Azure Data Lake Store'a alın.
  3. Verileri yüklemeye hazırlayın.
  4. PolyBase veya COPY komutuyla verileri hazırlama tablolarına yükleyin.
  5. Verileri dönüştürme.
  6. Verileri üretim tablolarına ekleyin.

Yükleme öğreticisi için bkz . Azure blob depolamadan veri yükleme.

1. Kaynak verileri metin dosyalarına ayıklama

Kaynak sisteminizden veri almak depolama konumuna bağlıdır. Amaç, verileri desteklenen sınırlandırılmış metinlere veya CSV dosyalarına taşımaktır.

Desteklenen dosya biçimleri

PolyBase ve COPY deyimiyle UTF-8 ve UTF-16 ile kodlanmış sınırlandırılmış metin veya CSV dosyalarından veri yükleyebilirsiniz. Sınırlandırılmış metin veya CSV dosyalarına ek olarak, ORC ve Parquet gibi Hadoop dosya biçimlerinden yüklenir. PolyBase ve COPY deyimi de Gzip ve Snappy sıkıştırılmış dosyalarından veri yükleyebilir.

Genişletilmiş ASCII, sabit genişlikli biçim ve WinZip veya XML gibi iç içe biçimler desteklenmez. SQL Server'dan dışarı aktarıyorsanız, verileri sınırlandırılmış metin dosyalarına aktarmak için bcp komut satırı aracını kullanabilirsiniz.

2. Verileri Azure Blob depolamaya veya Azure Data Lake Store'a aktarma

Verileri Azure depolama alanına getirmek için Azure Blob depolamaya veya Azure Data Lake Store 2. Nesil'e taşıyabilirsiniz. Her iki konumda da veriler metin dosyalarında depolanmalıdır. PolyBase ve COPY deyimi her iki konumdan da yüklenebilir.

Verileri Azure Depolama'ya taşımak için kullanabileceğiniz araçlar ve hizmetler:

  • Azure ExpressRoute hizmeti ağ aktarım hızını, performansı ve öngörülebilirliği artırır. ExpressRoute, verilerinizi ayrılmış bir özel bağlantı üzerinden Azure'a yönlendiren bir hizmettir. ExpressRoute bağlantıları verileri genel İnternet üzerinden yönlendirmez. Bağlantılar genel İnternet üzerinden yapılan tipik bağlantılara göre daha fazla güvenilirlik, daha yüksek hız, daha düşük gecikme süresi ve daha yüksek güvenlik sunar.
  • AzCopy yardımcı programı verileri genel İnternet üzerinden Azure Depolama'ya taşır. Bu, veri boyutlarınız 10 TB'tan küçükse çalışır. AzCopy ile düzenli olarak yük gerçekleştirmek için ağ hızını test edin ve kabul edilebilir olup olmadığını denetleyin.
  • Azure Data Factory(ADF) yerel sunucunuza yükleyebileceğiniz bir ağ geçidine sahiptir. Ardından verileri yerel sunucunuzdan Azure Depolama'ya taşımak için bir işlem hattı oluşturabilirsiniz. Data Factory'yi ayrılmış SQL havuzlarıyla kullanmak için bkz . Ayrılmış SQL havuzları için veri yükleme.

3. Verileri yüklemeye hazırlama

Yüklemeden önce depolama hesabınızdaki verileri hazırlamanız ve temizlemeniz gerekebilir. Verileri metin dosyalarına aktardığınızda veya veriler Azure Depolama'da olduktan sonra verileriniz kaynaktayken veri hazırlama gerçekleştirilebilir. Verilerle mümkün olduğunca erken çalışmak en kolayıdır.

Tabloları tanımlama

İlk olarak, COPY deyimini kullanırken ayrılmış SQL havuzunuzda yüklemekte olduğunuz tabloları tanımlayın.

PolyBase kullanıyorsanız, yüklemeden önce ayrılmış SQL havuzunuzda dış tablolar tanımlamanız gerekir. PolyBase, Azure Depolama'daki verileri tanımlamak ve verilere erişmek için dış tablolar kullanır. Dış tablo, veritabanı görünümüne benzer. Dış tablo tablo şemasını içerir ve ayrılmış SQL havuzunun dışında depolanan verileri gösterir.

Dış tabloları tanımlama veri kaynağını, metin dosyalarının biçimini ve tablo tanımlarını belirtmeyi içerir. İhtiyacınız olacak T-SQL söz dizimi başvuru makaleleri şunlardır:

Parquet dosyalarını yüklerken aşağıdaki SQL veri türü eşlemesini kullanın:

Parquet türü Parquet mantıksal türü (ek açıklama) SQL veri türü
BOOLEAN bit
İKILI / BYTE_ARRAY varbinary
ÇİFT float
YÜZMEK gerçek
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY ikili
İKİLİ UTF8 nvarchar
İKİLİ STRING nvarchar
İKİLİ ENUM nvarchar
İKİLİ UUID uniqueidentifier
İKİLİ DECIMAL ondalık
İKİLİ JSON nvarchar(MAX)
İKİLİ BSON varbinary(MAX)
FIXED_LEN_BYTE_ARRAY DECIMAL ondalık
BYTE_ARRAY INTERVAL varchar(MAX)
INT32 INT(8, true) smallint
INT32 INT(16, true) smallint
INT32 INT(32, true) int
INT32 INT(8, false) tinyint
INT32 INT(16, false) int
INT32 INT(32, false) bigint
INT32 DATE tarih
INT32 DECIMAL ondalık
INT32 TIME (MILLIS) Saat
INT64 INT(64, true) bigint
INT64 INT(64, false ) ondalık(20,0)
INT64 DECIMAL ondalık
INT64 TIME (MILLIS) Saat
INT64 TIMESTAMP (MILLIS) datetime2
Karmaşık tür LIST varchar(maksimum)
Karmaşık tür MAP varchar(maksimum)

Önemli

  • SQL ayrılmış havuzları şu anda MICROS ve NANOS duyarlıklı Parquet veri türlerini desteklememektedir.
  • Türler Parquet ile SQL arasında uyumsuzsa veya desteklenmeyen Parquet veri türleriniz varsa aşağıdaki hatayla karşılaşabilirsiniz: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • Parquet ve ORC dosya biçimi için 0-127 aralığındaki bir değerin tinyint sütununa yüklenmesi desteklenmez.

Dış nesne oluşturma örneği için bkz . Dış tablo oluşturma.

Metin dosyalarını biçimlendirme

PolyBase kullanıyorsanız, tanımlanan dış nesnelerin metin dosyalarının satırlarını dış tablo ve dosya biçimi tanımıyla hizalaması gerekir. Metin dosyasının her satırındaki veriler tablo tanımıyla hizalanmalıdır.

Metin dosyalarını biçimlendirmek için:

  • Verileriniz ilişkisel olmayan bir kaynaktan geliyorsa, bunları satırlara ve sütunlara dönüştürmeniz gerekir. Verilerin ilişkisel veya ilişkisel olmayan bir kaynaktan olması fark etmeksizin verilerin, verileri yüklemeyi planladığınız tablonun sütun tanımlarıyla uyumlu olacak şekilde dönüştürülmesi gerekir.
  • Metin dosyasındaki verileri, hedef tablodaki sütunlar ve veri türleriyle hizalamak için biçimlendirin. Dış metin dosyalarındaki veri türleri ile ayrılmış SQL havuzu tablosu arasındaki yanlış hizalama, yük sırasında satırların reddedilmesine neden olur.
  • Metin dosyasındaki alanları sonlandırıcıyla ayırın. Kaynak verilerinizde bulunmayan bir karakter veya karakter dizisi kullandığınızdan emin olun. CREATE EXTERNAL FILE FORMAT ile belirttiğiniz sonlandırıcıyı kullanın.

4. PolyBase veya COPY deyimini kullanarak verileri yükleme

Hazırlama tablosuna veri yüklemek en iyi yöntemdir. Hazırlama tabloları, üretim tablolarını engellemeden hataları işlemenize olanak sağlar. Hazırlama tablosu, verileri üretim tablolarına eklemeden önce veri dönüştürmeleri için ayrılmış SQL havuzu paralel işleme mimarisini kullanma fırsatı da sunar.

Yükleme seçenekleri

Verileri yüklemek için şu yükleme seçeneklerinden herhangi birini kullanabilirsiniz:

  • COPY deyimi, verileri sorunsuz ve esnek bir şekilde yüklemenize olanak sağladığından önerilen yükleme yardımcı programıdır. deyimi, PolyBase'in sağlamadığı birçok ek yükleme özelliğine sahiptir. Örnek bir öğreticiyi çalıştırmak için NY taksi KOPYALAMA öğreticisine bakın.
  • T-SQL ile PolyBase, dış veri nesnelerini tanımlamanızı gerektirir.
  • Azure Data Factory (ADF) ile PolyBase ve COPY deyimi bir diğer düzenleme aracıdır. İşlem hattını tanımlar ve işleri zamanlar.
  • Kaynak verileriniz SQL Server'da olduğunda SSIS ile PolyBase iyi çalışır. SSIS, kaynağı hedef tablo eşlemelerini tanımlar ve ayrıca yükü düzenler. SSIS paketleriniz zaten varsa, paketleri yeni veri ambarı hedefiyle çalışacak şekilde değiştirebilirsiniz.
  • Azure Databricks ile PolyBase, verileri bir tablodan Databricks veri çerçevesine aktarır ve/veya PolyBase kullanarak databricks veri çerçevesinden bir tabloya yazar.

Kullanılabilir öğreticileri gözden geçirin:

Diğer yükleme seçenekleri

PolyBase ve COPY deyimine ek olarak bcp veya SqlBulkCopy API'sini de kullanabilirsiniz. Yardımcı bcp program Azure Blob depolamadan doğrudan veritabanına yüklenir ve yalnızca küçük yükler için tasarlanmıştır.

Not

Bu seçeneklerin yük performansı PolyBase ve COPY deyiminden daha yavaştır.

5. Verileri dönüştürme

Veriler hazırlama tablosundayken iş yükünüzün gerektirdiği dönüştürmeleri gerçekleştirin. Ardından verileri bir üretim tablosuna taşıyın.

6. Verileri üretim tablolarına ekleme

INSERT INTO ... SELECT deyimi, hazırlama tablosundaki verileri kalıcı tabloya taşır.

BIR ETL işlemi tasarladığınızda, işlemi küçük bir test örneğinde çalıştırmayı deneyin. Tablodan bir dosyaya 1.000 satır ayıklamayı, Azure'a taşımayı ve ardından bir hazırlama tablosuna yüklemeyi deneyin.

İş ortağı yükleme çözümleri

İş ortaklarımızın çoğunun yükleme çözümleri vardır. Daha fazla bilgi edinmek için çözüm iş ortaklarımızın listesine bakın.

Sonraki adım