在使用spark cosmosdb连接器将spark dataframe写入cosmodb(sql api)时,无法在cosmodb的运行时创建新数据库和集合

j5fpnvbx  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(220)

我使用的是apachespark2.3.2v。下面是我使用apachespark执行cosmosdb的用例。我使用的是azure-cosmosdb-spark\ 2.3.0\ 2.11\ 1.3.3连接器。
用例-我正在spark中执行一些复杂的聚合,我的数据在cosmosdb(sql)中。我想在apachesparkDataframe中读取cosmosdb中的数据,执行一些复杂的聚合函数,然后写回cosmosdb,存储在新的数据库和集合中,这些数据库和集合将在运行时创建。
我能够成功地从cosmosdb读取数据,并使用Dataframe执行我的功能。现在我想写回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"]}

我查看了许多链接,但都给出了数据库名称和集合名称相同的读写操作。请让我知道如果你需要任何投入。
查询-
我可以使用SparkCosmosDB连接器通过ApacheSpark在cosmosdb中创建数据库和集合吗?
请给我建议任何解决办法。我是否需要构建一个与.NETSDK类似的api

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题