如何使用query_custom或覆盖默认查询

时间:2019-11-29 06:52:04

标签: apache-spark azure-cosmosdb

我正在从Spark查询CosmosDB,并且希望通过用query_custom覆盖默认查询来仅保留一条记录-我知道这是因为 c.sectionA.id 是唯一的。 通过针对CosmosDB(在浏览器中)执行查询本身,结果中只有一个文档。
但是下面的代码返回多个,所以这意味着我的查询(或query_custom)从未执行。

如何控制/覆盖执行什么查询? 默认查询是什么? (我的猜测:从c中选择*)

关于query_custom的发现:

  

query_custom:当从CosmosDB中获取数据时,将CosmosDB查询设置为覆盖默认查询。请注意,提供此选项后,它也将用于代替带有下推谓词的查询。

val query = "SELECT * FROM c where c.sectionA.id ='123456789ABCDEF'"

val readConfig = Config(Map("Endpoint" -> "https://abc-cosmos.documents.azure.com:443/",
                           "Masterkey" -> "123456789ABCDEF==",
                           "Database" -> "data",
                           "Collection" -> "collectionABC", 
     /*"query_custom" -> "SELECT * FROM c where c.sectionA.id ='123456789ABCDEF', */
                          "query_custom" -> query,  
                          "SamplingRatio" -> "1.0"))

val coll = spark.sqlContext.read.cosmosDB(readConfig)
coll.createOrReplaceTempView("tempView")

val q1 = "select * from tempView"
val df = spark.sql(q1)

df.show()

谢谢您的帮助!

0 个答案:

没有答案