Я пытаюсь записать данные из Spark (используя Databricks) в базу данных Mongo внутри Azure Cosmos DB. Я создал одну учетную запись Cosmos DB с API как «Azure Cosmos DB для Mongo DB API» .
Я создал базу данных, а также коллекцию, используя проводник данных учетной записи базы данных Azure Cosmos.
При создании коллекции я предоставил следующие данные:
Я ввел следующую запись в коллекцию
Я тоже могу проверить данные, выполнив запрос
Когда я подключаюсь с использованием Databricks, я получаю следующий вывод с printSchema .
Когда вызывается display (df) , отображается следующая информация
Если я попытаюсь вставить одну строку, используя Spark Dataframe, то вставленные данные показывают нулевое значение для $ t и $ v, используя следующий код
import com.microsoft.azure.cosmosdb.spark.schema._
import com.microsoft.azure.cosmosdb.spark._
import com.microsoft.azure.cosmosdb.spark.config.Config
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
val configMap = Map(
"Endpoint" -> "https://XXXXXX.documents.azure.com:443/",
"Masterkey" -> "xxxxxxxxxxxxxxxxx==",
"Database" -> "db1",
"Collection" -> "collection1")
val config = Config(configMap)
val data = Seq(Row("B", "US"))
val schema = List(StructField("name", StringType, true),StructField("country", StringType, true))
val writeDF = spark.createDataFrame(
spark.sparkContext.parallelize(data),
StructType(schema)
)
CosmosDBSpark.save(writeDF, config)
val df = spark.sqlContext.read.cosmosDB(config)
Я вижу, что добавляются новые столбцы, как показано на рисунке ниже для новой записи.
Способ вставки данных из браузера данных и из Spark сильно отличается.
Еще одна вещь, которую я заметил, что после вставки данных из spark браузер данных не может отобразить коллекцию, скорее он получает некоторую ошибку при попытке показать документы.
Я хочу знать, что нужно сделать, чтобы правильно вставить данные в базу данных Cosmos DB Mongo из Spark / Databricks. Пожалуйста, помогите.