Получение данных Cosmos Mongo DB с помощью блоков данных путем применения фильтров

Мне нужно было бы добавить условие фильтра при приеме данных из Cosmos Mongo DB с использованием Databricks,

Я использую следующий запрос для получения данных Cosmos Collection:

df = spark.read \
.format('com.mongodb.spark.sql.DefaultSource') \
.option('uri', sourceCosmosConnectionString) \
.option('database', sourceCosmosDocument) \
.option('collection', sourceCosmosCollection) \
.load()

Как я могу добавить сюда фильтр, чтобы выбрать только выбранные данные? Например: Я хочу получать данные только там, где

{"type" : "student"}

Я был бы очень признателен, если бы кто-нибудь мог помочь в этом

Я попытался выполнить следующий запрос, но получил ошибку, как показано ниже:

query = {"type" : "student"}
df = spark.read \
    .format('com.mongodb.spark.sql.DefaultSource') \
    .option('uri', sourceCosmosConnectionString) \
    .option('database', sourceCosmosDocument) \
    .option('collection', sourceCosmosCollection) \
    .option('pipeline', json.dumps(query)) \
    .load()

Ошибка: org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задача 0 на этапе 16.0 завершилась неудачно 4 раза, последний сбой: потеряна задача 0.3 на этапе 16.0 (TID 34) (10.139.64.5 исполнитель 0): com.mongodb. MongoCommandException: выполнение команды завершилось ошибкой 40324 (40324): «Неопознанное имя стадии конвейера: тип» на сервере xxxxxxx-xxxxx.mongo.cosmos.azure.com:10255. Полный ответ: {"ok": 0.0, "errmsg": "Неопознанное имя этапа конвейера: тип", "code": 40324, "codeName": "40324"}

Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сообщение об ошибке означает, что имя этапа в запросе конвейера агрегации не было распознано. Решение будет состоять в том, чтобы убедиться, что все имена конвейеров агрегации допустимы в вашем запросе.

В этой статье описаны распространенные ошибки и решения для развертываний с использованием Azure Cosmos DB для MongoDB.

Попробуйте это и, пожалуйста, дайте мне знать, если это сработает: -

query = {'$match': { 'type':'student' }}

df = spark.read \
 
.format('com.mongodb.spark.sql.DefaultSource') \
 
.option('uri', sourceCosmosConnectionString) \
 
.option('database', sourceCosmosDocument) \
 
.option('collection', sourceCosmosCollection) \
 
.option('pipeline', query) \
 
.load()

Спасибо за ответ, выражение соответствия работает как положено

Swapnil 15.11.2022 04:53

Другие вопросы по теме