Konfigurowanie partycjonowania niestandardowego w celu partycjonowania danych magazynu analitycznego
DOTYCZY: NoSQL MongoDB Gremlin
Partycjonowanie niestandardowe umożliwia partycjonowanie danych magazynu analitycznego na polach, które są często używane jako filtry w zapytaniach analitycznych, co zwiększa wydajność zapytań. Aby dowiedzieć się więcej na temat partycjonowania niestandardowego, zobacz artykuł dotyczący partycjonowania niestandardowego.
Aby korzystać z partycjonowania niestandardowego, musisz włączyć usługę Azure Synapse Link na koncie usługi Azure Cosmos DB. Aby dowiedzieć się więcej, zobacz jak skonfigurować usługę Azure Synapse Link. Wykonywanie partycjonowania niestandardowego można wyzwolić z notesu platformy Azure Synapse Spark przy użyciu usługi Azure Synapse Link dla usługi Azure Cosmos DB.
Uwaga
Aby móc korzystać z partycjonowania niestandardowego, konta usługi Azure Cosmos DB powinny mieć włączoną usługę Azure Synapse Link. Partycjonowanie niestandardowe jest obecnie obsługiwane tylko w przypadku platformy Azure Synapse Spark 2.0.
Uwaga
Usługa Synapse Link dla interfejsu API języka Gremlin jest teraz dostępna w wersji zapoznawczej. Możesz włączyć usługę Synapse Link w nowych lub istniejących grafach przy użyciu interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji na temat sposobu jej konfigurowania, kliknij tutaj.
Wyzwalanie niestandardowego zadania partycjonowania
Partycjonowanie można wyzwolić z notesu usługi Azure Synapse Spark przy użyciu usługi Azure Synapse Link. Można zaplanować jego uruchamianie jako zadanie w tle, raz lub dwa razy dziennie lub częściej można je wykonać w razie potrzeby. Możesz również wybrać jedno lub więcej pól z zestawu danych jako klucz partycji magazynu analitycznego.
Poniżej przedstawiono obowiązkowe opcje konfiguracji, które są wymagane do wyzwolenia niestandardowego wykonywania partycjonowania:
spark.cosmos.asns.execute.partitioning
- Wartość logiczna, która wyzwala niestandardowe wykonywanie partycjonowania. Wartość domyślna to false.spark.cosmos.asns.partition.keys
- Klucz partycji/s przy użyciu ciągu sformatowanego DDL. Na przykład: ReadDate String.spark.cosmos.asns.basePath
— ścieżka podstawowa magazynu partycjonowanego na podstawowym koncie magazynu usługi Synapse.
Uwaga
Jeśli wybierzesz wiele kluczy partycji, możesz uzyskać dostęp do tych rekordów z tego samego magazynu podzielonego na partycje przy użyciu ścieżki basePath wskazującej klucz.
Poniżej przedstawiono opcjonalne opcje konfiguracji, których można użyć podczas wyzwalania wykonywania partycjonowania niestandardowego:
spark.cosmos.asns.merge.partitioned.files
- Wartość logiczna, która umożliwia utworzenie pojedynczego pliku na wartość partycji na wykonanie. Wartość domyślna to false.spark.cosmos.asns.partitioning.maxRecordsPerFile
— Maksymalna liczba rekordów w pliku z jedną partycją w magazynie partycjonowany. Jeśli ta konfiguracja ispark.cosmos.asns.merge.partitioned.files
parametr są określone, nowe pliki są tworzone, gdy liczba rekordów przekroczy wartość maxRecordsPerFile. Ta konfiguracja jest zwykle wymagana tylko do początkowego partycjonowania dla większych kolekcji. Wartość domyślna to 1000 000.Podczas ustawiania parametru maxRecordsPerFile, ale nie konfigurujesz
spark.cosmos.asns.merge.partitioned.files
, rekordy mogą być dzielone między pliki przed osiągnięciem wartości maxRecordsPerFile. Podział pliku zależy również od dostępnego równoległości w puli.spark.cosmos.asns.partitioning.shuffle.partitions
— Steruje równoległością podczas partycjonowanych zapisów w magazynie podzielonym na partycje. Ta konfiguracja jest wymagana tylko do początkowego partycjonowania dla większych kolekcji. Jest ona ustawiona na liczbę dostępnych rdzeni w puli Platformy Spark. Wartość domyślna to 200. Niższe wartości mogą zmarnować zasoby, jeśli pula nie jest używana dla innych obciążeń. Wyższa wartość zwykle nie powoduje problemów, ponieważ niektóre zadania są wykonywane wcześnie i mogą uruchamiać więcej zadań podczas wykonywania wolnych zadań. Jeśli chcesz, aby zadanie partycjonowania zostało ukończone szybciej, dobrym rozwiązaniem jest zwiększenie rozmiaru puli.
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()
Wykonywanie zapytań za pomocą magazynu partycjonowanego
Do wykonywania zapytań z obsługą magazynu partycjonowanego wymagane są następujące dwie konfiguracje:
spark.cosmos.asns.partition.keys
spark.cosmos.asns.basePath
W poniższym przykładzie pokazano, jak używać tych konfiguracji do wykonywania zapytań względem powyższego magazynu podzielonego na partycje oraz jak filtrowanie przy użyciu klucza partycji może korzystać z oczyszczania partycji. Ten podzielony na partycje magazyn jest partycjonowany przy użyciu pola "ReadDate".
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))
Powyższy filtr ReadDate = "2021-11-01" spowoduje wyeliminowanie danych odpowiadających wartościom ReadDate innym niż 2021-11-01 podczas skanowania.
Uwaga
Ulepszenia zapytań korzystające z magazynu partycjonowanego mają zastosowanie w przypadku wykonywania zapytań w następujących przypadkach:
- Ramki danych platformy Spark utworzone na podstawie kontenera magazynu analitycznego usługi Azure Cosmos DB i
- Tabele platformy Spark wskazujące kontener magazynu analitycznego usługi Azure Cosmos DB.
Następne kroki
Aby dowiedzieć się więcej, zobacz następujące dokumenty:
- Co to jest partycjonowanie niestandardowe w usłudze Azure Synapse Link dla usługi Azure Cosmos DB?
- Usługa Azure Synapse Link dla usługi Azure Cosmos DB
- Omówienie magazynu analitycznego usługi Azure Cosmos DB
- Wprowadzenie do usługi Azure Synapse Link dla usługi Azure Cosmos DB
- Często zadawane pytania dotyczące usługi Azure Synapse Link dla usługi Azure Cosmos DB