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'te 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ü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 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 kaynak sistemden ayıklandığı, ayrılmış bir SQL havuzuna yüklendiği ve ardından 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üklenmek üzere 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, Gzip ve Snappy sıkıştırılmış dosyalarından da 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, bcp komut satırı aracını kullanarak verileri sınırlandırılmış metin dosyalarına aktarabilirsiniz.

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'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 geliştirir. 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üreleri 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ı görün.
  • Azure Data Factory (ADF) yerel sunucunuza yükleyebileceğiniz bir ağ geçidine sahiptir. Ardından yerel sunucunuzdan Azure Depolama'ya veri 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üklenmek üzere 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'ya aktarıldıktan sonra 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'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ın tanımlanması için veri kaynağının, metin dosyalarının biçiminin ve tablo tanımlarının belirtilmesi gerekir. İ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
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(maksimum),
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 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 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ış tablolar 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 verilerin tablo tanımıyla uyumlu olması gerekir. 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 uyumlu olacak şekilde biçimlendirin. Dış metin dosyalarındaki veri türleri ile ayrılmış SQL havuzu tablosu arasında yanlış hizalama, yük sırasında satırların reddedilmesine neden olur.
  • Metin dosyasındaki alanları bir 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, 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 COPY öğreticisine bakın.
  • T-SQL ile PolyBase dış veri nesneleri tanımlamanızı gerektirir.
  • Azure Data Factory (ADF) ile PolyBase ve COPY deyimi de başka bir 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 bir tablodan Databricks veri çerçevesine veri aktarır ve/veya PolyBase kullanarak bir Databricks veri çerçevesinden tabloya veri yazar.

Diğer yükleme seçenekleri

PolyBase ve COPY deyimine ek olarak bcp veya SqlBulkCopy API'sini kullanabilirsiniz. bcp, Azure Blob depolamadan geçmeden 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 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ımlar

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