Scala 是否可以将Mongo Shell样式的查询与Spark的Cosmos DB连接器一起使用?
我正在使用宇宙DB连接器来连接Spark。是否可以将Mongo Shell JSON样式的查询与Cosmos DB连接器一起使用,而不是使用SQL查询 我尝试使用MongoDB连接器来实现相同的功能,但在使用Mongo连接器时遇到了一些令人讨厌的内存限制错误。所以我放弃了这种方法 这是我希望查询的方式: val结果=db.cars.find { car.actor.account.name:比尔 } 这是cosmos连接器允许的方式: val readConfig:Config=ConfigMap Endpoint->config.getStringendpoint, Masterkey->config.getStringmasterkey, 数据库->config.getStringdatabase, 收藏->汽车, 首选地区->美国中南部, schema_samplesize->100, query_custom->SELECT*FROM root,其中root['$v']['car']['$v']['actor']['$v']['account']['$v']['name']['$v']='Bill' val results=spark.sqlContext.read.cosmosDBreadConfigScala 是否可以将Mongo Shell样式的查询与Spark的Cosmos DB连接器一起使用?,scala,apache-spark,azure-cosmosdb,Scala,Apache Spark,Azure Cosmosdb,我正在使用宇宙DB连接器来连接Spark。是否可以将Mongo Shell JSON样式的查询与Cosmos DB连接器一起使用,而不是使用SQL查询 我尝试使用MongoDB连接器来实现相同的功能,但在使用Mongo连接器时遇到了一些令人讨厌的内存限制错误。所以我放弃了这种方法 这是我希望查询的方式: val结果=db.cars.find { car.actor.account.name:比尔 } 这是cosmos连接器允许的方式: val readConfig:Config=ConfigMa
显然,面向SQL的方法不适合我从COSMOSDB获得的深度嵌套的数据结构。这也有点冗长;由于我不清楚的原因,要求每个嵌套字典都引用['$v']。我更希望能够使用Mongo风格的语法。本链接中提到的Spark的Cosmos DB连接器是针对Cosmos DB SQL API的,因此您只能在面向SQL的语言中查询它
// Import Necessary Libraries
import com.microsoft.azure.cosmosdb.spark.schema._
import com.microsoft.azure.cosmosdb.spark._
import com.microsoft.azure.cosmosdb.spark.config.Config
// Read Configuration
val readConfig = Config(Map(
"Endpoint" -> "https://doctorwho.documents.azure.com:443/",
"Masterkey" -> "YOUR-KEY-HERE",
"Database" -> "DepartureDelays",
"Collection" -> "flights_pcoll",
"query_custom" -> "SELECT c.date, c.delay, c.distance, c.origin, c.destination FROM c WHERE c.origin = 'SEA'" // Optional
))
// Connect via azure-cosmosdb-spark to create Spark DataFrame
val flights = spark.read.cosmosDB(readConfig)
flights.count()
但是,如果您的cosmos db是mongo api,您可以按照上面链接中的说明进行操作:
请参阅本指南:您可以看看使用apache spark的Will?它解释了如何连接,您应该能够适应任何驱动程序。