Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az SQL Analytics-végpont lehetővé teszi a lakehouse-beli adatok lekérdezését T-SQL-nyelv és TDS-protokoll használatával.
Jótanács
Az SQL Analytics-végponthasználat deltatábláinak optimalizálásával kapcsolatos átfogó, számítási feladatok közötti útmutatásért, beleértve a fájlméretet és a sorcsoportra vonatkozó javaslatokat, tekintse meg a számítási feladatok közötti táblák karbantartását és optimalizálását.
Minden lakehouse-nak van egy SQL Analytics-végpontja. A munkaterületen található SQL Analytics-végpontok száma megegyezik az adott munkaterületen kiépített tóházak és tükrözött adatbázisok számával.
Egy háttérfolyamat felel a lakehouse változásainak figyeléséért, valamint azért, hogy a munkaterület lakehouse-aiban véglegesített összes módosítás alapján naprakészen tartsa az SQL-elemzési végpontot. A Fabric platform átláthatóan kezeli a szinkronizálási folyamatot. Ha változás észlelhető egy lakehouse-ban, a háttérfolyamat frissíti a metaadatokat, az SQL Analytics-végpont pedig a lakehouse-táblákban lekötött változásokat tükrözi. Normál üzemeltetési körülmények között a lakehouse és az SQL Analytics-végpont közötti késés kevesebb, mint egy perc. A tényleges időtartam néhány másodperctől percig változhat a cikk által tárgyalt számos tényezőtől függően. A háttérfolyamat csak akkor fut, ha az SQL Analytics-végpont aktív, és 15 perc inaktivitás után leáll.
Útmutatás
- Az automatikus metaadatok felderítése nyomon követi a lakehouse-okkal kapcsolatos módosításokat, és egy Fabric munkaterületen csak egy példányban létezik. Ha megnövekedett késést tapasztal a lakehouse-k és az SQL Analytics-végpont közötti szinkronizálási módosítások esetében, annak oka lehet, hogy egy munkaterületen sok tóház található. Ilyen esetben fontolja meg az egyes lakehouse-k külön munkaterületre való migrálását, mivel ez a megközelítés lehetővé teszi az automatikus metaadatok felderítésének skálázását.
- A parquet-fájlok tervezés szerint nem módosíthatók. Frissítés vagy törlési művelet esetén a Delta-tábla új Parquet-fájlokat ad hozzá a módosításkészlettel, ami a frissítések és törlések gyakoriságától függően idővel növeli a fájlok számát. Ha nem ütemez karbantartást, ez a minta végül olvasási többletterhelést okoz, és ez a feltétel befolyásolja az SQL Analytics-végpont módosításainak szinkronizálásához szükséges időt. A probléma megoldásához ütemezze a lakehouse-táblák rendszeres karbantartási műveleteit.
- Bizonyos esetekben megfigyelheti, hogy a lakehouse-ban végrehajtott módosítások nem láthatók a társított SQL Analytics-végponton. Létrehozhat például egy új táblát a Lakehouse-ban, de még nem szerepel az SQL Analytics-végpontban. Előfordulhat például, hogy sok sort rögzít egy lakehouse-ban lévő táblába, de ezek az adatok még nem láthatók az SQL-analitikai végponton. Lehetősége van igény szerinti metaadat-szinkronizálás indítására.
- Az automatikus szinkronizálási folyamat nem támogatja az összes Delta-funkciót. A Fabricben az egyes motorok által támogatott funkciókkal kapcsolatos további információkért lásd a Delta Lake táblaformátum együttműködési lehetőségeit.
- Ha rendkívül nagy mennyiségű táblamódosítás történik az ETL-feldolgozás során, a várt késés az összes módosítás feldolgozásáig következik be.
Lakehouse-táblák optimalizálása az SQL Analytics-végpont lekérdezéséhez
Amikor az SQL Analytics-végpont egy tóházban tárolt táblákat olvas be, a lekérdezési teljesítmény nagymértékben függ az alapul szolgáló Parquet-fájlok fizikai elrendezésétől. A motor a beolvasásokat a Parquet-fájlok szintjén párhuzamosítja. Túl sok kis fájl növeli a fájl- és metaadat-terhet, míg a túl kevés fájl korlátozhatja a szkennelés párhuzamosságát.
A Spark által írt táblákhoz használd az alapértelmezett beállításokat a Fabric Spark runtime 2.0 vagy újabb verzióban. Ezek a futásidők alapértelmezés szerint lehetővé teszik az adaptív célfájl méret kiválasztását a táblázat szerinti legoptimálisabb célfájlméret kiválasztásához, kisebb táblák esetén 128 MB-tól 1 GB-ig a legnagyobb tábláknál. Kerüld el, hogy az alapértelmezett konfigurációkon felül rögzített célértékeket vagy tetszőleges sorszámlimitet állíts be. A sorkorlát nem veszi figyelembe a sorszélességet, és kis fájlokat hozhat létre keskeny táblákhoz.
Ha a Fabric Spark runtime 1.3-at használod, engedélyezd az adaptív célfájlméret és a fájlszintű tömörítési célokat, amelyek opt-in funkcióként elérhetők.
Nincs szükség V-Orderre az SQL analitikai végpont teljesítményének javításához, mivel a Spark Snappy tömörített parquet fájlokat ír, hogy csökkentse az olvasási és írási I/O-t.
Az alapértelmezett írási beállítások nem helyettesítik a táblakarbantartást. Alkalmazza az alábbi módszereket az egészséges elrendezés megőrzésére a táblázatok változásakor:
- Engedélyezze az automatikus tömörítést olyan munkák esetén, ahol a időszakosan hozzáadott szinkron írási késleltetés elfogadható. Az automatikus tömörítés egy Spark funkció, amely csak akkor fut, ha túl sok kis fájl van egy táblázatban.
- Ütemezz időszakos
OPTIMIZEfeladatokat olyan terhelésekhez, ahol az automatikus tömörítés által hozzáadott időszakos késleltetés nem felel meg az adatfrissítési SLA-knak. - A megtartási és az időutazási követelményeidnek megfelelően futtasd a(z)
VACUUMparancsot a Delta-napló által már nem hivatkozott fájlok eltávolításához.VACUUMcsökkenti a megtartott tárhelyet, de nem javítja az aktív fájlelrendezést. - Kerüld a magas kardinalitású partíciókat és a testreszabott író konfigurációkat, amelyek sok apró fájlt hoznak létre.
Ha nem használod az automatikus tömörítést, a karbantartásra szoruló táblák azonosításához használj adatvezetéket és a sys.sp_get_table_health_metrics T-SQL tárolt eljárást a OPTIMIZEfuttatás előtt. Oktatóanyagért tekintse meg a Lakehouse-táblák optimalizálása állapotellenőrzések alapján című témakört.
Note
A lakehouse-táblák általános karbantartásával kapcsolatos útmutatásért lásd a következőt: Táblakarbantartás futtatása a Lakehouse-ban.
Partícióméret-szempontok
A Delta tábla partícióoszlopának kiválasztása egy tóházban szintén befolyásolja, mennyi időbe telik a változások szinkronizálása az SQL analitikai végponttal. A partícióoszlop partícióinak száma és mérete fontos a teljesítmény szempontjából:
- A nagy számosságú (többnyire vagy teljesen egyedi értékekből álló) oszlop nagy számú partíciót eredményez. Sok partíció negatívan befolyásolja a metaadatok felderítésének teljesítményét a módosítások keresésekor. Ha egy oszlop számossága magas, válasszon egy másik oszlopot a particionáláshoz.
- Az egyes partíciók mérete a teljesítményt is befolyásolhatja. Olyan oszlopot használjon, amely legalább 1 GB-os (vagy ahhoz közeli) partíciót eredményez. Kövesd a legjobb gyakorlatokat a Delta táblák karbantartásához és partíciójához. A partíciók kiértékeléséhez Python szkriptet a Sample szkriptben találja a partíció részleteiről.
Nagy mennyiségű kis méretű parquet-fájl növeli a lakehouse és a hozzá tartozó SQL Analytics-végpont közötti módosítások szinkronizálásának idejét. Előfordulhat, hogy egy Delta-táblában egy vagy több ok miatt sok parquet-fájl lesz:
- Ha egy Delta-táblához olyan partíciót választ, amely sok egyedi értéket tartalmaz, a tábla minden egyes egyedi érték szerint lesz particionálva, ezért előfordulhat, hogy túlzottan particionált lesz. Válasszon olyan partícióoszlopot, amely nem rendelkezik magas számossággal, és egyenként legalább 1 GB-ot eredményez.
- A kötegelt és streamelési adatbetöltési arányok kis fájlokat is eredményezhetnek a lakehouse-ba írt módosítások gyakoriságától és méretétől függően. Előfordulhat például, hogy egy kis mennyiségű módosítás érkezik a tóházba, ami kis parkettafájlokat eredményez. A probléma megoldásához valósítsa meg a lakehouse-táblák rendszeres karbantartását.
Példaszkript a partíció részleteihez
A következő jegyzetfüzetet használva nyomtasd ki a jelentést, amely részletezi a Delta tábla alapját képező partíciók méretét és részleteit.
- Először adja meg az ABFSS útvonalat a Delta táblához a változóban
delta_table_path.- A Delta-tábla ABFSS-elérési útját a Fabric portál Explorer részéből szerezheti be. Kattintson a jobb gombbal a tábla nevére, majd válasszon
COPY PATHa lehetőségek listájából.
- A Delta-tábla ABFSS-elérési útját a Fabric portál Explorer részéből szerezheti be. Kattintson a jobb gombbal a tábla nevére, majd válasszon
- A szkript adja ki az összes partíciót a Delta táblához.
- A szkript minden partíción végigfut a fájlok teljes méretének és számának kiszámításához.
- A szkript a partíciók részleteit, a partíciónkénti fájlokat és a partíciónkénti méretet adja ki GB-ban.
A teljes szkriptet a következő kódblokkból másolhatja:
# Purpose: Print out details of partitions, files per partitions, and size per partition in GB.
from notebookutils import mssparkutils
# Define ABFSS path for your delta table. You can get ABFSS path of a delta table by simply right-clicking on table name and selecting COPY PATH from the list of options.
delta_table_path = "abfss://<workspace id>@<onelake>.dfs.fabric.microsoft.com/<lakehouse id>/Tables/<tablename>"
# List all partitions for given delta table
partitions = mssparkutils.fs.ls(delta_table_path)
# Initialize a dictionary to store partition details
partition_details = {}
# Iterate through each partition
for partition in partitions:
if partition.isDir:
partition_name = partition.name
partition_path = partition.path
files = mssparkutils.fs.ls(partition_path)
# Calculate the total size of the partition
total_size = sum(file.size for file in files if not file.isDir)
# Count the number of files
file_count = sum(1 for file in files if not file.isDir)
# Write partition details
partition_details[partition_name] = {
"size_bytes": total_size,
"file_count": file_count
}
# Print the partition details
for partition_name, details in partition_details.items():
print(f"{partition_name}, Size: {details['size_bytes']:.2f} bytes, Number of files: {details['file_count']}")
Automatikusan létrehozott séma a Lakehouse SQL Analytics-végpontjában
A Lakehouse minden Delta-táblájához az SQL Analytics-végpont automatikusan létrehoz egy táblát a megfelelő sémában. Az SQL Analytics végpontmotorja a Fabric Data Warehouse motoron alapul.
További információ: SQL Analytics-végpont metaadatainak szinkronizálása. Az automatikus metaadat-vizsgálat frissítését programozott módon is kényszerítheti az SQL-végpont metaadatainak REST API-val történő frissítésével.