apache-spark - 使用 Spark-CosmosDB 连接器将 Spark Dataframe 写入 Cosmodb (SQL Api) 时,无法在运行时在 cosmodb 中创建新的数据库和集合
问题描述
我正在使用 Apache Spark 2.3.2v。下面是我使用 Apache Spark 使用 CosmosDB 执行的用例。我正在使用azure-cosmosdb-spark_2.3.0_2.11_1.3.3连接器。
用例- 我在 spark 中执行一些复杂的聚合,我的数据在 CosmosDB(SQL) 中。我想从 Apache Spark 数据帧中的 CosmosDB 读取数据并执行一些复杂的聚合函数并写回 CosmosDB 存储在新的数据库和集合中,这将在运行时创建。
我能够成功地从 CosmosDB 读取数据并使用数据框执行我的功能。现在我想写回 CosmosDB 但在新数据库和新集合中。
下面是我从 CosmosDB 读取数据的代码 -
import com.microsoft.azure.cosmosdb.spark.schema._
import com.microsoft.azure.cosmosdb.spark._
import com.microsoft.azure.cosmosdb.spark.config.Config
val readConfig = Config(Map("Endpoint" -> "https://xyz.documents.azure.com:443/",
"Masterkey" -> "",
"Database" -> "Database1",
"PreferredRegions" -> "",
"Collection" -> "Collection1",
"SamplingRatio" -> "1.0"))
val flights = spark.read.cosmosDB(readConfig)
flights.count() // performed complex aggrgate functions
下面是写回 CosmosDB(新数据库和集合)的代码 -
val writeConfig = Config(Map(
"Endpoint" -> "https://xyz.documents.azure.com:443/",
"Masterkey" ->"",
"Database" -> "Database2",
"PreferredRegions" -> "",
"Collection" -> "Collection2",
"WritingBatchSize" -> "100",
"Upsert" -> "true"))
flights.write.mode(SaveMode.Overwrite).cosmosDB(writeConfig)
当我尝试提供不同的数据库和新的集合名称(未在 cosmosDb 中创建)时,它总是给我以下异常
Exception in thread "main" com.microsoft.azure.documentdb.DocumentClientException: Message: {"Errors":["Resource Not Found. Learn more: https:\/\/aka.ms\/cosmosdb-tsg-not-found"]}
我查看了许多链接,但所有链接都为数据库名称和集合名称提供了相同的读写操作。如果您需要任何输入,请告诉我。
询问 -
- 我可以使用 Spark-cosmos Db 连接器通过 Apache spark 在 CosmosDB 中创建数据库和集合吗?
请建议我任何解决方案。我是否需要构建一个与 .NET SDK 中类似的 API
解决方案
推荐阅读
- javascript - 如何在 JavaScript 中从调用者获取对象引用
- c - 接口 32nos。模拟信号到 PIC24EP**814 微控制器
- python - 如何在子类中使用“setStyleSheet”
- sql - 检索零和字符之间的数字
- oracle - 在 sql developer 中将 concat 插入到现有表中
- angular - Angular httpClient.post() 无法像 Postman 那样获取 API 返回的错误对象
- android - 有时文本会覆盖 InputLayout 中的提示
- calculated-columns - SAP HANA 计算列 - 获取上个月数据
- spring-boot - IntellijIdea 与 spring restart 类加载器加载类文件
- php - 如何获得现场观众数量?