Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du ansluter till Azure DocumentDB från Azure Databricks för att utföra vanliga dataåtgärder med Hjälp av Python och Spark. Du konfigurerar nödvändiga beroenden, upprättar en anslutning och kör läs-, skriv-, filter- och aggregeringsåtgärder med MongoDB Spark-anslutningsappen.
Prerequisites
En prenumeration på Azure
- Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto
Ett befintligt Azure DocumentDB-kluster
- Om du inte har något kluster skapar du ett nytt kluster
Brandvägg konfigurerad för att tillåta åtkomst från Azure-tjänster
Spark-miljö i Azure Databricks
- MongoDB Spark-anslutningsprogram som är kompatibelt med Spark 3.2.1 eller senare (finns på Maven-koordinater
org.mongodb.spark:mongo-spark-connector_2.12:3.0.1)
- MongoDB Spark-anslutningsprogram som är kompatibelt med Spark 3.2.1 eller senare (finns på Maven-koordinater
Konfigurera Azure Databricks-arbetsyta
Konfigurera din Azure Databricks-arbetsyta så att den ansluter till Azure DocumentDB. Lägg till MongoDB Connector för Spark-biblioteket i din beräkning för att aktivera anslutning till Azure DocumentDB.
Gå till Azure Databricks-arbetsytan.
Konfigurera standardberäkningen som är tillgänglig eller skapa en ny beräkningsresurs för att köra din notebook.
Välj en Databricks-runtime som stöder minst Spark 3.0.
I beräkningsresursen väljer du Bibliotek>Installera ny>Maven.
Lägg till Maven-koordinaterna:
org.mongodb.spark:mongo-spark-connector_2.12:3.0.1Välj Installera.
Starta om beräkningen när installationen är klar.
Konfigurera anslutningsinställningar
Konfigurera Spark att använda azure DocumentDB-anslutningssträngen för alla läs- och skrivåtgärder.
I Azure-portalen navigerar du till din Azure DocumentDB-resurs.
Under Inställningar>Anslutningssträngar kopierar du anslutningssträngen. Den har formuläret:
mongodb+srv://<user>:<password>@<database_name>.mongocluster.cosmos.azure.comI Azure Databricks går du till beräkningskonfigurationen och väljer Avancerade alternativ (längst ned på sidan).
Lägg till följande Spark-konfigurationsvariabler:
-
spark.mongodb.output.uri– Klistra in anslutningssträngen -
spark.mongodb.input.uri– Klistra in anslutningssträngen
-
Spara konfigurationen.
Du kan också ange anslutningssträngen direkt i koden med hjälp .option() av metoden när du läser eller skriver data.
Skapa Python-notebook-fil
Kör dina dataåtgärder genom att skapa en ny Python-anteckningsbok.
Skapa en ny Python-anteckningsbok på din Azure Databricks-arbetsyta.
Definiera dina anslutningsvariabler i början av notebook-filen:
connectionString = "mongodb+srv://<user>:<password>@<database_name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000" database = "<database_name>" collection = "<collection_name>"Ersätt platshållarvärdena med ditt faktiska databasnamn och samlingsnamn.
Läsa data från samling
Läsa data från din Azure DocumentDB-samling till en Spark DataFrame.
Använd följande kod för att läsa in data från din samling:
df = spark.read.format("mongo").option("database", database).option("spark.mongodb.input.uri", connectionString).option("collection", collection).load()Kontrollera att data har lästs in framgångsrikt.
df.printSchema() display(df)Observera resultatet. Den här koden skapar en DataFrame som innehåller alla dokument från den angivna samlingen och visar schemat och data.
Filtrera data
Använd filter för att hämta specifika delmängder av data från din samling.
Använd DataFrame-metoden
filter()för att tillämpa villkor:df_filtered = df.filter(df["birth_year"] == 1970) display(df_filtered)Använd kolumnindexnummer:
df_filtered = df.filter(df[2] == 1970) display(df_filtered)Observera resultatet. Den här metoden returnerar endast de dokument som matchar dina filtervillkor.
Fråga efter data med SQL
Skapa tillfälliga vyer och kör SQL-frågor mot dina data för välbekant SQL-baserad analys.
Skapa en tillfällig vy från din DataFrame:
df.createOrReplaceTempView("T")Kör SQL-frågor mot vyn:
df_result = spark.sql("SELECT * FROM T WHERE birth_year == 1970 AND gender == 2") display(df_result)Observera resultatet. Med den här metoden kan du använda SQL-standardsyntax för komplexa frågor och kopplingar.
Skriva data till samling
Spara nya eller ändrade data genom att skriva tillbaka DataFrames till Azure DocumentDB-samlingar.
Använd följande kod för att skriva data till en samling:
df.write.format("mongo").option("spark.mongodb.output.uri", connectionString).option("database", database).option("collection", "CitiBike2019").mode("append").save()Skrivåtgärden slutförs utan utdata. Kontrollera att skrivåtgärden har slutförts genom att läsa data från samlingen:
df_verify = spark.read.format("mongo").option("database", database).option("spark.mongodb.input.uri", connectionString).option("collection", "CitiBike2019").load() display(df_verify)Tips/Råd
Använd olika skrivlägen, till exempel
append,overwriteellerignoreberoende på dina krav.
Köra aggregeringspipelines
Kör aggregeringspipelines för att utföra databearbetning och analys på serversidan direkt i Azure DocumentDB. Aggregeringspipelines möjliggör kraftfulla datatransformeringar, gruppering och beräkningar utan att flytta data från databasen. De är idealiska för analys i realtid, instrumentpaneler och rapportgenerering.
Definiera din sammansättningspipeline som en JSON-sträng:
pipeline = "[{ $group : { _id : '$birth_year', totaldocs : { $count : 1 }, totalduration: {$sum: '$tripduration'}} }]"Kör pipelinen och läs in resultatet:
df_aggregated = spark.read.format("mongo").option("database", database).option("spark.mongodb.input.uri", connectionString).option("collection", collection).option("pipeline", pipeline).load() display(df_aggregated)
Relaterat innehåll
- Maven central – MongoDB Spark-anslutningsversioner
- Praktiska MongoDB-sammansättningar – guide till aggregeringspipelines
- Konfigurera brandväggsinställningar