Чтение из БД Cosmos в Dataframe с помощью оператора where - PullRequest
0 голосов
/ 26 апреля 2019

Причина этого запроса заключается в том, что мне нужно прочитать данные из БД Cosmos в кадр данных в блоках данных, используя условие where.

У меня есть сценарий, в котором я считываю данные из БД Cosmos через Databricks как Dataframe.Мое требование - использовать предложение IN с подзапросом, чтобы прочитать только несколько документов из коллекции Cosmos.

Я читаю документы из базы данных Cosmos с помощью команды 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', чтобы получить идентификаторы из другой таблицы.

Я пытался.

read_CND_Cosmos.select ("country", "type"") .where ($" id ".isin (выберите id из Cosmos, где (id = '1001000035', '1001000051'))"). show => Это дает ошибку.

Также я попробовал следующееoption,

val CNP_Table = read_CNP.createOrReplaceTempView ("CNP") val CNP_Query = spark.sqlContext.sql ("выбрать идентификатор из CNP, где ENDDATE, например, '31 / 12/9999% '")

val data = CNP_Query.collect (). Map (x => x.getString (0)). MkString (",")

val read_from_cosmos = read_CND_Cosmos.select ("country", "type"). where ($ "id" .isin (data)) => Это не дает мне никакой ошибки, но не показывает никакого результата.

Я не хочупрочитайте всю коллекцию в Космосе, и вместо этого мне нужно прочитать документы, основанные на атрибуте id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...