Почему разъем Spark Mongo не подавляет фильтры? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть большая коллекция Mongo, которую я хочу использовать в своем приложении Spark, используя соединитель Spark Mongo.Коллекция довольно большая (> 10 ГБ) и содержит ежедневные данные с индексом в поле original_item.CreatedDate.Запросы на выбор пары дней в Монго чрезвычайно быстры (меньше секунды).Однако когда я пишу тот же запрос с использованием фреймов данных, этот фильтр не переносится в Mongo, что приводит к крайне низкой производительности, поскольку Spark, по-видимому, извлекает всю коллекцию и выполняет фильтрацию самостоятельно.

Запрос выглядит следующим образом:

collection
      .filter("original_item.CreatedDate  > %s" % str(start_date_timestamp_ms)) \
      .filter("original_item.CreatedDate  < %s" % str(end_date_timestamp_ms)) \
      .select(...)

В физическом плане я вижу: PushedFilters: [IsNotNull(original_item)]

Когда я делаю аналогичный запрос с фильтрацией в другом поле этой коллекции, Монго успешно толкает его вниз - PushedFilters: [IsNotNull(original_item), IsNotNull(doc_type), EqualTo(doc_type,case)]!

Может ли быть так, что GreaterThan проталкивание фильтра не поддерживается соединителем Mongo Spark, или в этом есть ошибка?

Спасибо!

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