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şleminin kullanılması yerleşik dağıtılmış sorgu işleme özelliklerinden yararlanarak yükleme öncesinde 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, veri 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 depolama 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 bir 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 yerleştirin.
  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 kodlamalı 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 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 almak 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 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 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ı görün.
  • Azure Data Factory (ADF) yerel sunucunuza yükleyebileceğiniz bir ağ geçidine sahiptir. Ardından verileri yerel sunucunuzdan Azure Depolama'a 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 olduğunda, verileriniz kaynaktayken veri hazırlama gerçekleştirilebilir. Verilerle sürecin en erken aşamalarında çalışmak en kolayıdır.

Tabloları tanımlama

COPY deyimini kullanırken önce ayrılmış SQL havuzunuzda yüklemekte olduğunuz tabloları tanımlamanız gerekir.

PolyBase kullanıyorsanız, yüklemeden önce ayrılmış SQL havuzunuzda dış tablolar tanımlamanız gerekir. PolyBase, Azure Depolama 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) veri türünü SQL
BOOLEAN bit
BINARY / BYTE_ARRAY Varbinary
ÇİFT float
FLOAT real
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY ikili
IKİLİ UTF8 nvarchar
IKİLİ DİZE nvarchar
IKİLİ ENUM nvarchar
IKİLİ UUID uniqueidentifier
IKİLİ ON -DA -LIK decimal
IKİLİ JSON nvarchar(MAX)
IKİLİ BSON varbinary(max)
FIXED_LEN_BYTE_ARRAY ON -DA -LIK decimal
BYTE_ARRAY ARALIĞI 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 date
INT32 ON -DA -LIK decimal
INT32 TIME (MILLIS ) time
INT64 INT(64, true) bigint
INT64 INT(64, false ) ondalık(20,0)
INT64 ON -DA -LIK decimal
INT64 TIME (MILLIS) time
INT64 ZAMAN DAMGASı (MILLIS) datetime2
Karmaşık tür LİSTE varchar(maks.)
[Karmaşık tür] (https://github.com/apache/parquet-format/blob/master/LogicalTypes.md HARİTA varchar(maks.)

Önemli

  • SQL ayrılmış havuzlar şu anda MICROS ve NANOS duyarlığı olan Parquet veri türlerini desteklememektedir.
  • Türler Parquet ile SQL arasında uyuşmuyorsa veya desteklenmeyen Parquet veri türleriniz varsa şu hatayla karşılaşabilirsiniz: "HdfsBridge::recordReaderFillBuffer - Kayıt okuyucu arabelleği doldurulurken beklenmeyen hatayla karşılaşıldı: 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ükleyin

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 ayrıca verileri üretim tablolarına eklemeden önce veri dönüştürmeleri için ayrılmış SQL havuzu paralel işleme mimarisini kullanma fırsatı verir.

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 COPY öğreticisine bakın.
  • T-SQL ile PolyBase dış veri nesneleri 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 olduğunda SSIS ile PolyBase iyi çalışır. SSIS, kaynak ile 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 bir Databricks veri çerçevesindeki verileri bir tabloya yazar.

Diğer yükleme seçenekleri

PolyBase ve COPY deyimine ek olarak bcp veya SqlBulkCopy API'sini de kullanabilirsiniz. bcp, 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, verileri hazırlama tablosundan 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 1000 satır ayıklamayı, Azure'a taşımayı ve ardından 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ımlar

Yükleme yönergeleri için bkz. En iyi veri yükleme yöntemleri.