【MongoDB + Spark】 技术问题汇总与解决方案笔记

场景背景

最近练手项目:Spark 结合 MongoDB 构建商品推荐系统的过程中,过程中出现多种环境配置与兼容性问题,主要涉及 MongoDB 连接、版本兼容性、Casbah 驱动使用问题等。汇总调试过程中遇到的常见错误及其解决方案,供参考复用。


一、MongoDB 无法连接错误

错误现象

复制代码
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches WritableServerSelector...
Caused by: java.net.UnknownHostException: linux

原因分析

  • MongoDB URI 中使用了错误的主机名 linux
  • 本机没有叫 linux 的 host,也没有在 hosts 文件中做映射

解决方案

scala 复制代码
// 将配置中的 URI 改为 localhost 或本地 IP
"mongo.uri" -> "mongodb://localhost:27017/orecommender"

检测连接可以拿navicat去连接


二、MongoDB Shell 无法使用 mongosh 命令

错误现象

复制代码
'mongosh' 不是内部或外部命令

原因分析

  • 安装的是 MongoDB 的旧版本(如 4.x),默认没有 mongosh
  • 环境变量配置可能未添加或路径错误

解决方案

  • 使用 mongo 命令替代 mongosh

  • 检查并添加环境变量 Path:

    C:\Program Files\MongoDB\Server\4.4\bin


三、连接正常但执行 .dropCollection() 报错

错误现象

复制代码
com.mongodb.MongoCommandException: Command failed with error 352: 'Unsupported OP_QUERY command: drop'

原因分析

  • 当前 MongoDB 为 v5.x 或 v6.x
  • 使用的 Casbah 驱动过老,使用了已废弃的 OP_QUERY 协议
  • MongoDB 6.0+ 默认禁用了对旧协议的支持

解决方案

  • 方法一:注释掉 .dropCollection()
scala 复制代码
// productCollection.dropCollection()
// ratingCollection.dropCollection()
  • 方法二:手动在 Compass 或 mongo shell 中删除集合
js 复制代码
use orecommender
db.Product.drop()
db.Rating.drop()
  • 方法三(长期):升级 MongoDB Java 驱动 + 改写为 Mongo Spark Connector 10.x

四、兼容推荐版本说明

组件 推荐版本
MongoDB 4.2.x 或 4.4.x
Casbah 驱动 兼容 Mongo <= 4.4
Spark + Mongo 连接器 Mongo Spark Connector 2.4(老版)

五、降级 MongoDB 操作步骤(Windows)

  1. 卸载当前 MongoDB(控制面板)
  2. 下载旧版本(如 MongoDB 4.4):
  3. 安装 .msi 并设置为服务
  4. 验证:
bash 复制代码
mongod -version
mongo

六、配置环境变量路径建议

bash 复制代码
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_xx
MONGO_BIN=C:\Program Files\MongoDB\Server\4.4\bin
  • 添加到系统 Path:

    %JAVA_HOME%\bin
    %MONGO_BIN%

相关推荐
志尊宝9 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
计算机编程指导师9 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
沪上企服通10 小时前
历史账套科目重映射与规则版本重算:旧账梳理的“口径复位”工程
笔记·架构
计算机编程指导师12 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
计算机编程指导师13 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
计算机编程指导师13 小时前
计算机毕设选题推荐:Hadoop大数据下的个体肥胖健康风险评估与可视化系统源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·肥胖健康风险
计算机编程指导师14 小时前
Python大数据毕设怎么写?Django结合Hadoop+Spark京东销售分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·京东商品
Go Work14 小时前
2026 Cadence SPB 24.1中文版安装图文详解(附安装包)
经验分享·笔记
阿里云大数据AI技术15 小时前
在 EMR Serverless Spark 的 Ray 作业中使用增强自适应弹性扩容机制
人工智能·spark
ACP广源盛1392462567315 小时前
HDMI2.0 转 DP1.4 桥接方案评估:国产 GSV2125C@ACP 芯片选型笔记
笔记·硬件架构·hdmi·type-c·国产芯片