Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 是否可以将Mongo Shell样式的查询与Spark的Cosmos DB连接器一起使用?_Scala_Apache Spark_Azure Cosmosdb - Fatal编程技术网

Scala 是否可以将Mongo Shell样式的查询与Spark的Cosmos DB连接器一起使用?

Scala 是否可以将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

我正在使用宇宙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.cosmosDBreadConfig
显然,面向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?它解释了如何连接,您应该能够适应任何驱动程序。