Azure Synapse Analytics’teki ayrılmış SQL havuzu için veri yükleme stratejileri
geleneksel SMP adanmış SQL havuzları verileri yüklemek için bir ayıkla, 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 faydalanan dağıtılmış sorgu işleme mimarisini kullanır.
Ayıklama, yükleme ve dönüştürme (ELT) işleminin kullanımı, yerleşik olarak dağıtılan sorgu işleme yeteneklerini kullanır ve yüklemeden önce veri dönüştürme için gereken kaynakları ortadan kaldırır.
adanmış SQL havuzları bcp ve sqlbulkcopy apıgibi popüler SQL Server seçenekleri de dahil olmak üzere birçok yükleme yöntemini destekleirken, verileri yüklemenin en hızlı ve en ölçeklenebilir yolu polybase dış tabloları ve COPY deyimleridir.
polybase ve COPY ifadesiyle, Azure Blob depolamada depolanan dış verilere veya T SQL dili aracılığıyla Azure Data Lake Store erişebilirsiniz. Yükleme sırasında en fazla esneklik için, COPY ifadesini kullanmanızı öneririz.
ELT nedir?
ayıklama, yükleme ve dönüştürme (ELT), verilerin bir kaynak sistemden ayıklandığı, adanmış bir SQL havuzuna yüklendiği ve sonra dönüştürülebileceği bir işlemdir.
ELT 'ı uygulamaya yönelik temel adımlar şunlardır:
- Kaynak verileri metin dosyalarına ayıklayın.
- Verileri Azure Blob depolama alanına veya Azure Data Lake Store ekleyin.
- Verileri yükleme için hazırlayın.
- Verileri PolyBase veya COPY komutuyla hazırlama tablolarına yükleyin.
- Verileri dönüştürün.
- Verileri üretim tablolarına ekleyin.
Yükleme öğreticisi için bkz. Azure Blob depolamadan veri yükleme.
1. kaynak verileri metin dosyalarına ayıklayın
Kaynak sisteminizden veri alma, depolama konumuna bağlıdır. Amaç, verileri desteklenen sınırlandırılmış metin veya CSV dosyalarına taşımaktır.
Desteklenen dosya biçimleri
PolyBase ve COPY ifadesiyle, UTF-8 ve UTF-16 kodlamalı sınırlandırılmış metin veya CSV dosyalarından veri yükleyebilirsiniz. Ayrılmış metin veya CSV dosyalarına ek olarak, ORC ve Parquet gibi Hadoop dosya biçimlerinden yüklenir. PolyBase ve COPY deyimleri, verileri gzip ve Snappy sıkıştırılmış dosyalarından de 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 depolama alanına veya Azure Data Lake Store ekleyin
Verileri Azure depolama 'ya taşımak için Azure Blob depolama alanına veya Azure Data Lake Store Gen2taşıyabilirsiniz. Her iki konumda da veriler metin dosyalarında depolanmalıdır. PolyBase ve COPY deyimleri her iki konumdan de yüklenebilir.
Azure Depolama verileri taşımak için kullanabileceğiniz araçlar ve hizmetler:
- Azure ExpressRoute hizmeti ağ aktarım hızını, performansı ve öngörülebilirlik geliştirir. ExpressRoute, verilerinizi Azure 'a adanmış bir özel bağlantıyla yönlendiren bir hizmettir. ExpressRoute bağlantıları, verileri genel İnternet üzerinden yönlendirmez. Bağlantılar, genel İnternet üzerinden tipik bağlantılardan daha fazla güvenilirlik, daha hızlı hız, daha düşük gecikme süreleri ve daha yüksek güvenlik sunar.
- azcopy yardımcı programı , verileri genel internet üzerinden Azure Depolama 'a taşıtabilecek. Bu, veri boyutlarınızın 10 TB 'den küçük olması durumunda geçerlidir. AzCopy ile düzenli olarak yükleme gerçekleştirmek için, kabul edilebilir olup olmadığını görmek için ağ hızını test edin.
- Azure Data Factory (ADF) , yerel sunucunuza yükleyebileceğiniz bir ağ geçidine sahip olabilir. ardından, yerel sunucunuzdaki verileri Azure Depolama 'ye taşımak için bir işlem hattı oluşturabilirsiniz. adanmış SQL havuzlarıyla Data Factory kullanmak için bkz. adanmış SQL havuzları için verileri yükleme.
3. verileri yükleme için hazırlama
Yüklemeden önce Depolama hesabınızdaki verileri hazırlamanız ve temizlemeniz gerekebilir. veri hazırlama işlemi, verileri metin dosyalarına dışarı aktardığınızda veya veriler Azure Depolama olduktan sonra veri kaynağında olduğunda gerçekleştirilebilir. Mümkün olduğunca önce verilerle çalışmak en kolay yoldur.
Tabloları tanımlama
COPY ifadesini kullanırken, önce yüklediğiniz tablo (ler) i adanmış SQL havuzunuza göre tanımladığınız tabloları tanımlamalısınız.
polybase kullanıyorsanız, yüklemeden önce adanmış SQL havuzunuzdaki 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 adanmış 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. T-SQL söz konusu olacak sözdizimi 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 | |
| IKILI/BYTE_ARRAY | ikili | |
| ÇIFT | float | |
| FLOAT | real | |
| INT32 | int | |
| INT64 | bigint | |
| INT96 | datetime2 | |
| FIXED_LEN_BYTE_ARRAY | ikili | |
| Ý | UTF8 | nvarchar |
| Ý | DIZISINDE | nvarchar |
| Ý | YARDıMıNıN | nvarchar |
| Ý | EDIN | uniqueidentifier |
| Ý | KATEGORI | decimal |
| Ý | JSON | nvarchar(MAX) |
| Ý | 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 | ZAMAN (MILIS) | time |
| INT64 | INT(64, true) | bigint |
| INT64 | INT(64, false ) | decimal(20,0) |
| INT64 | ON -DA -LIK | decimal |
| INT64 | ZAMAN (MILIS) | time |
| INT64 | ZAMAN DAMGASı (MILIS) | 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ıklı Parquet veri türlerini desteklememektedir.
- Parquet ile SQL arasında türler eşleşmezse veya desteklenmeyen Parquet veri türleri varsa şu hatayla karşılaşabilirsiniz: "HdfsBridge::recordReaderFillBuffer - Kayıt okuyucu arabelleği doldurmada beklenmeyen hatayla karşılaşıldı: ClassCastException: ..."
- 0-127 aralığındaki bir değeri Parquet ve ORC dosya biçimi için küçük bir sütuna yükleme desteklenmiyor.
Dış nesneler 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ırdaki veriler tablo tanımıyla uyumlu olması gerekir. Metin dosyalarını biçimlendirmek için:
- Verileriniz ilişkisel olmayan bir kaynaktan geliyorsa bunu satırlara ve sütunlara dönüştürmeniz gerekir. Verilerin ister ilişkisel ister ilişkisel olmayan bir kaynaktan olsun, verilerin verileri yüklemeyi planlamış tablo için sütun tanımları ile hizalanması için 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ında veri türleri ile ayrılmış havuz SQL arasındaki yanlış hiza, yükleme sırasında satırların reddedilmesine neden olur.
- Metin dosyasındaki alanları bir sonlandırıcı ile ayırma. Kaynak verilerinizde buluna bir karakter veya karakter dizisi kullanmaya emin olun. CREATE EXTERNAL FILE FORMAT ile belirttiğiniz sonlandırıcıyı kullanın.
4. PolyBase veya COPY deyimini kullanarak verileri yükleme
Verileri hazırlama tablosuna yüklemek en iyi uygulamadır. Hazırlama tabloları, üretim tablolarına müdahale etmeden hataları işlemeye 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 sağlar.
Yükleme seçenekleri
Verileri yüklemek için şu yükleme seçeneklerin herhangi birini kullanabilirsiniz:
- COPY deyimi, verileri sorunsuz ve esnek bir şekilde yüklemenizi sağlayan önerilen yükleme yardımcı programıdır. deyimi, PolyBase'in sağlamay olduğu birçok ek yükleme özelliğine sahip. Örnek bir öğreticiyi çalıştırmak için NY taksi COPY öğreticisi'ne bakın.
- T-SQL PolyBase dış veri nesneleri tanımlamanız gerekir.
- Azure Data Factory (ADF) ile PolyBase ve COPY deyimi başka bir düzenleme aracıdır. İşlem hattını tanımlar ve işleri zamanlar.
- SSIS ile PolyBase, kaynak verileriniz SQL Server. SSIS, kaynağı hedef tablo eşlemelerini tanımlar ve yükü de ayarlar. SSIS paketleriniz zaten varsa, paketleri yeni veri ambarı hedefiyle çalışacak şekilde değiştirebilirsiniz.
- PolyBase Azure Databricks bir tablodan Databricks veri çerçevesine veri aktarabilir ve/veya PolyBase kullanarak bir Databricks veri çerçevesine 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çerek 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 tablosunda yer alırken, iş yükünüz için gereken dönüştürmeleri gerçekleştirin. Ardından verileri bir üretim tablosuna taşıma.
6. Verileri üretim tablolarına ekleme
INSERT INTO ... SELECT deyimi, verileri hazırlama tablosundan kalıcı tabloya taşır.
Bir ETL işlemi tasarlarken, 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 birçoğunda yükleme çözümleri vardır. Daha fazla bilgi için çözüm iş ortaklarımızın listesine bakın.
Sonraki adımlar
Yükleme kılavuzu için bkz. Veri yükleme için en iyi yöntemler.