Adatkihagyási index
Fontos
DATASKIPPING INDEX
a Databricks Runtime 7.0-ban el lett távolítva. Javasoljuk, hogy inkább Delta-táblákat használjon, amelyek továbbfejlesztett adatkiugrási képességeket kínálnak.
Fontos
Ez a dokumentáció ki lett állítva, és lehet, hogy nem frissül. A tartalomban említett termékek, szolgáltatások vagy technológiák már nem támogatottak. Lásd: A Delta Lake adatkihagyása.
Leírás
A partíciók metszése mellett a Databricks Runtime egy másik funkciót is tartalmaz, amely célja, hogy elkerülje az irreleváns adatok vizsgálatát, nevezetesen az adatkimaradási indexet. Fájlszintű statisztikákat használ a fájlrészletesség további kihagyásához. Ez a Hive-stílusú particionálással működik, de nem függ attól.
Az adatok kihagyásának hatékonysága az adatok jellemzőitől és fizikai elrendezésétől függ. Mivel a kihagyás a fájlrészletességen történik, fontos, hogy az adatok horizontálisan particionálva legyen több fájl között. Ez általában több hozzáfűző feladat, (shuffle) particionálás, gyűjtőzés és/vagy a .spark.sql.files.maxRecordsPerFile
A legjobban a rendezett gyűjtőkkel (df.write.bucketBy(...).sortBy(...).saveAsTable(...)
/ CREATE TABLE ... CLUSTERED BY ... SORTED BY ...
), illetve a partíciókulcsokkal korrelált oszlopokkal (például , ) rendelkező táblákon működik a legjobban, companyID - stockPrice
de akkor is, brandName - modelName
ha az adatok éppen valamilyen rendezést/fürtözést mutatnak (például orderID
, ). bitcoinValue
Feljegyzés
Ez a bétaverzió számos fontos korlátozással rendelkezik:
- Ez a bejelentkezés: manuálisan kell engedélyezni, táblázatonkénti alapon.
- Ez csak SQL: nincs DataFrame API hozzá.
- A táblák indexelése után az azt követő
INSERT
vagy a műveletek hatása nem garantált, amíg az index explicit reFRESHedADD PARTITION
nem lesz látható.
SQL-szintaxis
Index létrehozása
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Engedélyezi az adatok kihagyását az adott táblán az első (azaz bal szélső) N támogatott oszlopok esetében, ahol az N-t az (alapértelmezett: 32) vezérlispark.databricks.io.skipping.defaultNumIndexedCols
.
partitionBy
az oszlopok mindig indexelve vannak, és nem számítanak bele ebbe az N-be.
Index létrehozása oszlopokhoz
CREATE DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
FOR COLUMNS (col1, ...)
Engedélyezi az adatok kihagyását az adott táblában a megadott oszlopok listájához. A fentiekhez hasonlóan az összes partitionBy
oszlop mindig indexelve lesz a megadottakon kívül.
Index leírása
DESCRIBE DATASKIPPING INDEX [EXTENDED] ON [TABLE] [db_name.]table_name
Megjeleníti az adott tábla mely oszlopait indexeli, valamint az összegyűjtött fájlszintű statisztikák megfelelő típusait.
Ha EXTENDED
meg van adva, megjelenik egy "effectiveness_score" nevű harmadik oszlop, amely hozzávetőlegesen jelzi, hogy a DataSkipping mennyire lesz hasznos a megfelelő oszlopok szűrői számára.
Teljes index frissítése
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Újraépíti a teljes indexet. Vagyis a rendszer újra indexeli a tábla összes partícióját.
Partíciók frissítése
REFRESH DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
PARTITION (part_col_name1[=val1], part_col_name2[=val2], ...)
Csak a megadott partíciókat indexeli újra. Ennek a műveletnek általában gyorsabbnak kell lennie, mint az index teljes frissítése.
Index elvetése
DROP DATASKIPPING INDEX ON [TABLE] [db_name.]table_name
Letiltja az adatok kihagyását az adott táblában, és törli az összes indexadatot.