Přeskočení dat pro Delta Lake
Poznámka:
V Databricks Runtime 13.3 a novějších doporučuje Databricks používat clustering liquid pro rozložení tabulky Delta. Clustering není kompatibilní s řazením Z. Viz Použijte liquid clustering pro tabulky Delta.
Při zápisu dat do tabulky Delta se informace o vynechávání dat shromažďují automaticky. Delta Lake v Azure Databricks využívá tyto informace (minimální a maximální hodnoty, počty null a celkový počet záznamů na soubor) v době dotazu, aby bylo možné poskytovat rychlejší dotazy.
Je nutné shromáždit statistiky pro sloupce, které se používají v ZORDER
příkazech. Podívejte se, co je řazení Z?
Určení sloupců statistiky Delta
Delta Lake ve výchozím nastavení shromažďuje statistiky o prvních 32 sloupcích definovaných ve schématu tabulky. Pokud je povolená prediktivní optimalizace, jsou statistiky vynechání souborů vybrány inteligentně a nejsou omezeny na prvních 32 sloupců. Automatická prediktivní optimalizace spouští příkaz ANALYZE
pro sběr statistik ve spravovaných tabulkách Unity Catalog. Databricks doporučuje povolit prediktivní optimalizaci pro všechny spravované tabulky Katalogu Unity, aby se zjednodušila údržba dat a snížily náklady na úložiště. Viz prediktivní optimalizace spravovaných tabulek v katalogu Unity.
Pokud nepoužíváte prediktivní optimalizaci, můžete upravit chování, které omezuje shromažďování statistik na 32 sloupců, nastavením jedné z následujících vlastností tabulky:
Vlastnost tabulky | Podporováno prostředí Databricks Runtime | Popis |
---|---|---|
delta.dataSkippingNumIndexedCols |
Všechny podporované verze Databricks Runtime | Zvyšte nebo zmenšete počet sloupců, u kterých Delta shromažďuje statistiky. Závisí na pořadí sloupců. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS a vyšší | Zadejte seznam názvů sloupců, pro které Delta Lake shromažďuje statistiky.
dataSkippingNumIndexedCols Nahrazuje . |
Vlastnosti tabulky lze nastavit při vytváření tabulky nebo pomocí příkazů ALTER TABLE
. Viz referenční vlastnosti tabulky Delta .
Aktualizace těchto vlastností automaticky nepřepočítá statistiky pro existující data. Místo toho ovlivňuje chování budoucí shromažďování statistik při přidávání nebo aktualizaci dat v tabulce. Delta Lake nevyužívá statistiky pro sloupce, které nejsou zahrnuty v aktuálním seznamu statistických sloupců.
Pokud jste ve službě Databricks Runtime 14.3 LTS a vyšší změnili vlastnosti tabulky nebo změnili zadané sloupce pro statistiky, můžete ručně aktivovat přepočítaní statistiky pro tabulku Delta pomocí následujícího příkazu:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Poznámka:
Dlouhé řetězce jsou během shromažďování statistik zkráceny. Můžete se rozhodnout vyloučit dlouhé řetězcové sloupce z kolekce statistik, zejména pokud se sloupce nepoužívají často pro filtrování dotazů.
Co je řazení Z?
Poznámka:
Databricks doporučuje používat liquid clustering pro všechny nové Delta tabulky. V kombinaci s kapalinovým shlukováním nelze použít ZORDER
. Vizte Použijte liquid clustering pro tabulky Delta.
Z-ordering je technika k umístění souvisejících informací ve stejné sadě souborů. Toto společné umístění automaticky používá Delta Lake v algoritmech přeskakování dat v Azure Databricks. Toto chování výrazně snižuje množství dat, která Delta Lake v Azure Databricks potřebuje číst. Pro seřazení dat podle Z určíte sloupce, které se mají seřadit v části ZORDER BY
:
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Pokud očekáváte, že se sloupec běžně používá v predikátech dotazů a pokud má tento sloupec vysokou kardinalitu (tj. velký počet jedinečných hodnot), použijte ZORDER BY
.
Pro ZORDER BY
můžete zadat více sloupců jako seznam oddělený čárkami. Účinnost lokality však klesá s každým dalším sloupcem. Pořadí sloupců, na kterých nejsou shromážděny statistiky, by bylo neefektivní a plýtváním zdroji. Důvodem je to, že přeskočení dat vyžaduje statistiky místních sloupců, jako jsou min, maximum a počet. Shromažďování statistik pro určité sloupce můžete nakonfigurovat tak, že změníte pořadí sloupců ve schématu, nebo můžete zvýšit počet sloupců pro shromažďování statistik.
Poznámka:
Řazení Z není idempotentní , ale má za cíl být přírůstkovou operací. Doba, po které trvá řazení Z, není zaručeno, že se během několika spuštění sníží. Pokud se ale do oddílu, který byl právě seřazený podle Z, nepřidala žádná nová data, další řazení podle Z tohoto oddílu nebude mít žádný vliv.
Pořadí vykreslování má za cíl vytvořit rovnoměrně vyvážené datové soubory s ohledem na počet řazených kolekcí členů, ale ne nutně velikost dat na disku. Dvě míry jsou nejčastěji korelovány, ale mohou nastat situace, kdy tomu tak není, což vede ke zkreslení času optimalizace úloh.
Například, pokud
ZORDER BY
datum a vaše nejnovější záznamy mají mnohem větší rozsah (například delší pole nebo řetězcové hodnoty) než ty v minulosti, očekává se, že doby úlohOPTIMIZE
budou zkresleny, stejně jako výsledné velikosti souborů. Jedná se ale pouze o problém samotnéhoOPTIMIZE
příkazu, který by neměl mít žádný negativní dopad na následné dotazy.