Я использую Cosmos DB Connector для Spark. Можно ли использовать запросы Mongo Shell "JSON-style" с соединителем Cosmos DB вместо SQL-запросов?
Я пытался использовать MongoDB Connector вместо этого для достижения той же функциональности, но столкнулся с некоторыми раздражающими ошибками с памятьюограничивает использование Mongo Connector. Поэтому я отказался от этого подхода.
Так я бы предпочел запросить:
val results = db.cars.find(
{
"car.actor.account.name": "Bill"
}
)
Это способ, которым соединитель космоса позволяет:
val readConfig: Config = Config(Map(
"Endpoint" -> config.getString("endpoint"),
"Masterkey" -> config.getString("masterkey"),
"Database" -> config.getString("database"),
"Collection" -> "cars",
"preferredRegions" -> "South Central US",
"schema_samplesize" -> "100",
"query_custom" -> "SELECT * FROM root WHERE root['$v']['car']['$v']['actor']['$v']['account']['$v']['name']['$v'] = 'Bill'"
))
val results = spark.sqlContext.read.cosmosDB(readConfig)
Очевидно, что SQL-ориентированный подходне очень хорошо подходит для глубоко вложенных структур данных, которые я получаю из Cosmos DB. Это тоже немного более многословно;требовать ссылки на каждый вложенный словарь с "['$ v']" по причинам, по которым я неясен. Я бы предпочел использовать синтаксис в стиле Монго.