Megosztás a következőn keresztül:


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 a spark.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: