Egyéni particionálás konfigurálása elemzési tár adatainak particionálásához
A KÖVETKEZŐKRE VONATKOZIK: NoSQL
MongoDB
Gremlin
Az egyéni particionálás lehetővé teszi az elemzési tár adatainak particionálását olyan mezőkön, amelyeket gyakran használnak szűrőkként az elemzési lekérdezésekben, ami jobb lekérdezési teljesítményt eredményez. Az egyéni particionálással kapcsolatos további információkért tekintse meg az egyéni particionálásról szóló cikket.
Az egyéni particionálás használatához engedélyeznie kell az Azure Synapse Linket az Azure Cosmos DB-fiókjában. További információkért tekintse meg az Azure Synapse Link konfigurálását. Az egyéni particionálás végrehajtása az Azure Synapse Spark-jegyzetfüzetből indítható el az Azure Cosmos DB-hez készült Azure Synapse Link használatával.
Feljegyzés
Az Azure Cosmos DB-fiókoknak engedélyezniük kell az Azure Synapse Linket az egyéni particionálás előnyeinek kihasználásához. Az egyéni particionálás jelenleg csak az Azure Synapse Spark 2.0 esetében támogatott.
Feljegyzés
A Gremlin API-hoz készült Synapse Link előzetes verzióban érhető el. Az Azure CLI használatával engedélyezheti a Synapse Linket az új vagy meglévő gráfokban. A konfigurálásáról további információt ide kattintva talál.
Egyéni particionálási feladat aktiválása
A particionálás egy Azure Synapse Spark-jegyzetfüzetből indítható el az Azure Synapse Link használatával. Ütemezheti, hogy háttérfeladatként fusson, naponta egyszer vagy kétszer, vagy szükség esetén gyakrabban is végrehajtható. Egy vagy több mezőt is kiválaszthat az adathalmazból elemzési tár partíciókulcsaként.
A következő kötelező konfigurációs beállítások szükségesek az egyéni particionálás végrehajtásának aktiválásához:
spark.cosmos.asns.execute.partitioning
- Logikai érték, amely egyéni particionálási végrehajtást indít el. Az alapértelmezett érték: hamis.spark.cosmos.asns.partition.keys
- Partíciókulcsok DDL formátumú sztring használatával. Például: ReadDate String.spark.cosmos.asns.basePath
– A Synapse elsődleges tárfiók particionált tárolójának alap elérési útja.
Feljegyzés
Ha több partíciókulcsot választ, ezek a rekordok ugyanabból a particionált tárolóból érhetők el, és a basePath jelzi a kulcsot.
Az alábbi választható konfigurációs beállításokat használhatja az egyéni particionálás végrehajtásának aktiválásához:
spark.cosmos.asns.merge.partitioned.files
- Logikai érték, amely lehetővé teszi egyetlen fájl létrehozását partíciónkénti értékenként végrehajtásonként. Az alapértelmezett érték hamis.spark.cosmos.asns.partitioning.maxRecordsPerFile
– Egy particionált fájl rekordjainak maximális száma a particionált tárolóban. Ha ez a konfiguráció és aspark.cosmos.asns.merge.partitioned.files
beállítás meg van adva, akkor az új fájlok akkor jönnek létre, ha a rekordok száma meghaladja a maximálisRecordsPerFile értéket. Ez a konfiguráció általában csak a nagyobb gyűjtemények kezdeti particionálásához szükséges. Az alapértelmezett érték 1 000 000.Ha beállítja a maxRecordsPerFile értéket, de nem konfigurálja
spark.cosmos.asns.merge.partitioned.files
, a rekordok a maximálisRecordsPerFile elérése előtt feloszthatók a fájlok között. A fájlmegosztás a készleten elérhető párhuzamosságtól is függ.spark.cosmos.asns.partitioning.shuffle.partitions
- Szabályozza a párhuzamosságot a particionált tárolóba történő particionált írások során. Ez a konfiguráció csak a nagyobb gyűjtemények kezdeti particionálásához szükséges. A Spark-készletben elérhető magok száma. Az alapértelmezett érték 200. Az alacsonyabb értékek erőforrás-pazarlást okozhatnak, ha a készletet nem használják más számítási feladatokhoz. A magasabb érték általában nem okoz problémát, mert egyes tevékenységek korán befejeződnek, és több tevékenységet is elindíthatnak, míg a lassúak futnak. Ha azt szeretné, hogy a particionálási feladat gyorsabban befejeződjön, célszerű növelni a készlet méretét.
spark.read\
.format("cosmos.olap") \
.option("spark.synapse.linkedService", "<enter linked service name>") \
.option("spark.cosmos.container", "<enter container name>") \
.option("spark.cosmos.asns.execute.partitioning", "true") \
.option("spark.cosmos.asns.partition.keys", "readDate String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
.option("spark.cosmos.asns.merge.partitioned.files", "true") \
.option("spark.cosmos.asns.partitioning.maxRecordsPerFile", "2000000") \
.option("spark.cosmos.asns.partitioning.shuffle.partitions", "400") \
.load()
Lekérdezés végrehajtása particionált tárolóval
A particionált tár támogatásával végzett lekérdezések végrehajtásához a következő két konfiguráció szükséges:
spark.cosmos.asns.partition.keys
spark.cosmos.asns.basePath
Az alábbi példa bemutatja, hogyan használhatja ezeket a konfigurációkat a fenti particionált tároló lekérdezéséhez, és hogy a partíciókulcs használatával végzett szűrés hogyan használhatja a partíciómetszetet. A particionált tároló particionálása a "ReadDate" mező használatával történik.
df = spark.read\
.format("cosmos.olap") \
.option("spark.synapse.linkedService", "<enter linked service name>") \
.option("spark.cosmos.container", "<enter container name>") \
.option("spark.cosmos.asns.partition.keys", "readDate String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
.load()
df_filtered = df.filter("readDate='2020-11-01 00:00:00.000'")
display(df_filtered.limit(10))
A fenti ReadDate = "2021-11-01" szűrő a 2021-11-01-től eltérő ReadDate értékeknek megfelelő adatokat kizárja a vizsgálatból a végrehajtás során.
Feljegyzés
A particionált tárolót használó lekérdezési fejlesztések a következő lekérdezések végrehajtásakor alkalmazhatók:
- Az Azure Cosmos DB elemzési tárolóból létrehozott Spark-adatkeretek és
- Az Azure Cosmos DB elemzési tárolóra mutató Spark-táblák.
Következő lépések
További információért tekintse meg a következő dokumentumokat:
- Mi az egyéni particionálás az Azure Cosmos DB-hez készült Azure Synapse Linkben?
- Azure Cosmos DB-hez készült Azure Synapse Link
- Az Azure Cosmos DB elemzési tárának áttekintése
- Az Azure Cosmos DB-hez készült Azure Synapse Link használatának első lépései
- Gyakori kérdések az Azure Cosmos DB-hez készült Azure Synapse Linkkel kapcsolatban