使用where子句从Cosmos DB读取到Dataframe

时间:2019-04-26 03:57:10

标签: dataframe apache-spark-sql azure-cosmosdb

这个问题的原因是,我需要使用where子句将Cosmos DB中的数据读取到数据块中的数据帧中。

我有一个场景,我通过Databricks作为数据帧从Cosmos DB中读取数据。 我的要求是将IN子句与子查询一起使用,以仅读取Cosmos集合中的少量文档。

我正在使用以下命令从Cosmos DB中读取文档:    val read_CND_Cosmos ='spark.sqlContext.read.cosmosDB(config)'

val read_from_cosmos = read_CND_Cosmos.select(“ country”,“ type”)。where($“ id” .isin(1001000051,1001000035,1101000034))。show =>可以。

现在,我需要在'isin'中使用子查询来从另一个表中获取ID。

我尝试过。

read_CND_Cosmos.select(“ country”,“ type”)。where($“ id” .isin(从cosmos中选择id,其中(id ='1001000035','1001000051'))“)。show =>错误。

我也尝试了以下选项,

val CNP_Table = read_CNP.createOrReplaceTempView(“ CNP”) val CNP_Query = spark.sqlContext.sql(“从CNP中选择ID,其中ENDDATE如“ 31/12/9999%””)

val数据= CNP_Query.collect()。map(x => x.getString(0))。mkString(“,”)

val read_from_cosmos = read_CND_Cosmos.select(“ country”,“ type”)。where($“ id” .isin(data))=>这不会给我任何错误,但不会显示任何结果。

我不想在Cosmos中读取整个集合,而是需要根据id属性读取文档。

0 个答案:

没有答案