为什么 Spark Mongo 连接器不下推过滤器?

2023-12-11

我有一个大型 Mongo 集合,想在我的 Spark 应用程序中使用 Spark Mongo 连接器。该集合相当大(>10 GB)并且包含每日数据,索引为original_item.CreatedDate场地。在 Mongo 中选择几天的查询非常快(不到一秒)。然而,当我使用数据帧编写相同的查询时,该过滤器不会下推到 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)]

当我通过对该集合的另一个字段进行过滤来进行类似的查询时,mongo 成功地将其向下推送 -PushedFilters: [IsNotNull(original_item), IsNotNull(doc_type), EqualTo(doc_type,case)]!

难道是这样吗?GreaterThanMongo Spark 连接器不支持过滤器推送,或者存在错误?

Thanks!


这不是GreaterThan这导致了您的问题,因为过滤器位于嵌套字段上。您的过滤器已打开doc_type有效,因为它不是嵌套的。这显然是 Spark 中 Catalyst 引擎的问题,而不是 Mongo 连接器的问题。它也会影响 Parquet 等中的谓词下推。

有关更多详细信息,请参阅 Spark Jira 中的以下讨论。

火花19638

火花17636

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Spark Mongo 连接器不下推过滤器? 的相关文章

  • 从数组中查找前 N 个条目

    我的收藏结构如下 id 1 Trips EndID 5 Tripcount 12 EndID 6 Tripcount 19 id 2 Trips EndID 4 Tripcount 12 EndID 5 Tripcount 1
  • Alembic 无法识别 False 默认值

    在维护 SQLAlchemy 数据模型并利用 alembic 进行版本控制时 我所做的以下代码更改导致了空修订 some column Column Boolean nullable False default False 以前是 some
  • Spark - scala - 如何检查配置单元中是否存在表

    我必须使用 Spark 1 6 2 scala 检查配置单元中是否存在表 如果没有 我必须创建一个空数据框并将其保存为配置单元表 如果存在 则覆盖现有表 我需要一个返回布尔值的函数 基于该函数我可以做出上述决定 是否创建新表或覆盖现有表 1
  • 您使用的 ORM 框架的最佳功能是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • Firebird数据库模式/数据差异工具

    RedGate http www red gate com为 Microsoft SQL Server 制作一个工具 允许您捕获两个数据库之间的差异 它生成更新数据库模式所需的脚本 同时保留数据 我需要为 Firebird 数据库找到这样的
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想
  • mocha——手表和猫鼬模型

    如果我让 mocha 监视更改 每次保存文件时 mongoose 都会抛出以下错误 OverwriteModelError 无法覆盖Client模型一旦编译 我知道猫鼬不允许两次定义模型 但我不知道如何让它与mocha watch clie
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 如何中止 MongoDB shell 中正在运行的查询?

    我不敢相信我必须问这个问题 但是如何停止我刚刚运行的查询 该查询现在正在运行 并且显然需要很长时间才能在 Mongo shell 中完成 Control C似乎会使外壳崩溃 并吐出大量错误 中建议的愚蠢解决方案这个帖子 https stac
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • 我可以要求在 mongodb 集合中设置属性吗? (不为空)

    我可以在 mongodb 中定义一个需要设置某些属性的模式吗 很像NOT NULL在 SQL 中 如果可以的话 这个的语法是什么 我正在使用 Node js 和猫鼬 猫鼬 v3 6 15 MongoDB v2 4 5 EditCharles
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • i18Next - NodeJS - 如何在不重新加载服务器的情况下更改翻译

    我正在使用 NodeJS 的 i18next 包来启用翻译 我将它作为标准 并为每个语言 国家对使用一个 json 文件 我想构建一个管理页面来编辑翻译 而无需深入研究代码 那么 如何 重新加载 管理员编辑过的 json 文件 而无需重新启
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • $lookup结果中的$match

    我有下一个蒙戈代码 db users aggregate match and UserName eq administrator Company CompanyName eq test lookup from companies local
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 我如何在 mongodb 的数组中找到文本搜索

    id objectId 23651478 name Tomatos array title Vegetables description Vegitables are good to health id objectId 45761244
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心

随机推荐

  • 在 Webkit .NET 中打开本地文件

    由于某种原因 简单的 WebKitBrowser1 Navigate localfilehere 不起作用 我尝试将 file 添加到 URL 但这也不起作用 这看起来很荒谬 但是这个功能真的不存在吗 看来您输入了错误的网址 你可以通过以下
  • 嵌套相对定位的div需要有100%的高度

    我试图在这里获取嵌套的 div canvas 白色区域 http osf Fivetoolsoftware com填满 100 的空白空间 这是 HTML
  • 在服务器中创建文件后使用 jQuery 下载文件

    当我单击客户端上的按钮时 我想使用 AJAX 在服务器端调用公共静态 Web 方法 静态方法将创建适当的文件 创建文件后 我需要将其下载到客户端桌面 我找到了John Culvinar 的 jquery 文件下载插件但到目前为止还未能实施
  • 语句和关键字有什么区别?

    After calling return一份声明 这是在评论中向我提出的 return不是一个语句 它是开始 return 语句的关键字 有什么区别一份声明 and 开始语句的关键字 句子和句子开头的名词有什么区别 return是一个关键字
  • 在 Selenium for Python 中,如何获取元素的属性而不是属性?

    根据文档 获取属性实际上返回属性而不是属性 除非该属性不存在 在这种情况下它会回退到属性 获取属性将始终归还财产 有没有办法始终获取该属性 我觉得奇怪的是 名为 get attribute 的函数会优先考虑属性值而不是属性值 获取属性 属性
  • 如何使用 Tesseract API 迭代单词?

    我正在尝试与 Tesseract API 并行地学习 Python 我的最终目标是学习如何使用 Tesseract API 来读取文档并进行一些基本的错误检查 我发现了一些似乎是不错的起点的示例 但我无法理解两段代码之间的差异 尽管行为不同
  • 如何通过 Facebook API 发布包含多张照片的状态?

    我的 Facebook Graph API 有问题 有没有办法使用 Graph API Javascript SDK 在状态帖子中附加多张照片 使用 iOS Facebook 应用程序可以发布包含多张照片的状态 然而 在浏览了互联网上的文档
  • 您可以在加载的项目上创建 VC++ 解决方案集预处理器 #defines 吗?

    我有一个支持 define 的库来控制它的构建方式 然而 该库可以被需要不同版本的多个 EXE 项目使用 我可以让 app EXE 项目设置 define 在构建时由库使用 或者在解决方案中设置吗 我能想到的唯一其他选择是在库项目上创建一个
  • 结账 woocommerce wordpress 中简短描述的解决方案对我不起作用

    我已经使用了我在这里找到的 brasofilo 提供的解决方案结帐 woocommerce wordpress 中的简短描述 但由于某种原因 每个产品的每个描述后都会添加一个冒号 我用萤火虫试图找出它可能来自哪里 它显示在结帐页面上显示的每
  • 返回 Python CGI MySQL 脚本的输出

    我对 Python 和 MySQL 非常陌生 这是我的第一个 Stack 问题 所以 如果我遗漏了一些明显的东西 请提前道歉 但是 在提问之前我确实尝试过研究一下 我正在尝试学习 Python MySQL 和 CGI 脚本编写的基础知识 为
  • 从 k8s 入口动态添加/删除命名主机

    我正在 GKE 上设置 k8s 集群 通配符 DNS server com将指向入口控制器 在集群内部 将有网络服务器 Pod 每个 Pod 都公开一个独特的服务 Ingress 控制器将使用服务器名称来路由到各种服务 服务器几乎每天都会被
  • 当泄漏工具未显示内存泄漏时,如何调试内存泄漏?

    我有一个用 Swift 编写的 iOS 应用程序 该应用程序正在泄漏内存 在某些情况下 一些对象应该被释放 但它们没有 我通过简单地添加了解了这个问题deinit调试消息如下 deinit println DEINIT KeysProvid
  • 贪心算法无法完成 0-1 背包 p‌r‌o‌b‌l‌e‌m 的情况

    我正在寻找一种情况 其中选择重量 考虑容量为 4 的背包以及具有以下重量和价值的物品 Item Weight Value value Weight A 3 1 65 0 55 B 2 1 0 5 C 2 1 0 5 基于每权重价值的贪婪算法
  • 有没有办法在 Dart 中通过引用传递原始参数?

    我想通过引用传递一个原语 int bool 我在这里找到了关于它的讨论 通过引用传递值类型 段落 Dart 中的值类型 但我仍然想知道是否有办法在 Dart 中做到这一点 除了使用对象包装器 有什么发展吗 Dart 语言不支持这一点 我怀疑
  • 将 Service Broker 与 Sql Server Express 2008 结合使用

    是否可以在 sql Express 上使用外部激活而不通过 sql enterprise standard 我想向 sql Express 服务代理发送一条消息 然后让它通知在同一盒子上运行的外部应用程序服务 以便启动控制台应用程序来拾取消
  • 使用 jQuery.ajax 和 JSONP 设置标头?

    我正在尝试使用 jQuery 访问 google 文档 这是我到目前为止所拥有的 var token my auth token ajax url http docs google com feeds documents private f
  • 当 COM 事件发生时,如何更新自定义图形项(在 pyqtgraph 中)?

    我做了一个程序 实时接收原油期货的每笔交易信息 基本上 OnReceiveRealData当事务执行并调用时执行real get方法 在该方法中 收集当前时间 价格和数量数据并用它们制作字典 有更多方法可以从实时流数据中制作 OHLC 格式
  • 如何获取当前shell脚本的完整路径名?

    有没有更简单的方法来做到这一点 bin ksh THIS SCRIPT usr bin readlink f echo 0 bin sed s PWD echo THIS SCRIPT 我被困在使用ksh但更喜欢一个适用于的解决方案bash
  • 闹钟没有停止

    我试图停止警报并检查它是否停止 但它总是返回 true 意味着警报正在工作 我尝试根据链接中的答案停止警报https stackoverflow com a 17616299 1226882但这对我不起作用 请参考下面的代码 启动警报 pu
  • 为什么 Spark Mongo 连接器不下推过滤器?

    我有一个大型 Mongo 集合 想在我的 Spark 应用程序中使用 Spark Mongo 连接器 该集合相当大 gt 10 GB 并且包含每日数据 索引为original item CreatedDate场地 在 Mongo 中选择几天