我正在从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()
谢谢您的帮助!