当前位置: 首页 > news >正文

【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 文件中做映射

解决方案

// 将配置中的 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()
// productCollection.dropCollection()
// ratingCollection.dropCollection()
  • 方法二:手动在 Compass 或 mongo shell 中删除集合
use orecommender
db.Product.drop()
db.Rating.drop()
  • 方法三(长期):升级 MongoDB Java 驱动 + 改写为 Mongo Spark Connector 10.x

四、兼容推荐版本说明

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

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

  1. 卸载当前 MongoDB(控制面板)
  2. 下载旧版本(如 MongoDB 4.4):
    • 阿里云镜像:https://developer.aliyun.com/mirror/mongodb
  3. 安装 .msi 并设置为服务
  4. 验证:
mongod -version
mongo

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

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%
http://www.xdnf.cn/news/119449.html

相关文章:

  • FastMCP与FastAPI:构建自定义MCP服务器
  • 架构-信息安全技术基础知识
  • 基于Python+Flask的MCP SDK响应式文档展示系统设计与实现
  • SpringSecurity源码解读AbstractAuthenticationProcessingFilter
  • 沁恒CHV203中断嵌套导致修改线程栈-韦东山
  • 使用 VMware 安装一台 Linux 系统之Centos
  • 国芯思辰| 24位生理电采集模拟前端100%兼容ADS1294R睡眠监测仪
  • 济南国网数字化培训班学习笔记-第二组-3节-电网工程建设项目部门
  • VLM模型评估
  • 扣子空间出版的扣子空间使用手册和介绍
  • 数据库+Docker+SSH三合一!深度评测HexHub的全栈开发体验
  • R语言中的常用内置函数
  • Spring Boot常用注解详解:实例与核心概念
  • 各种各样的bug合集
  • HTML给图片居中
  • FreeRTOS【3】任务调度算法
  • Qt —— 在Linux下试用QWebEngingView出现的Js错误问题解决(附上四种解决办法)
  • React 与 Vue:两大前端框架的深度对比
  • 4月份最新---Meta发明了一种很新的Transformer
  • 【AI】基于OllamaSharp与.NET Core API的高效LLM查询实现
  • Langchain_Agent+数据库
  • 从对数变换到深度框架:逻辑回归与交叉熵的数学原理及PyTorch实战
  • ssh启动不了报错
  • 3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群
  • React19源码阅读之commitRoot
  • OpenBMC:BmcWeb login创建session
  • Spring Boot + MyBatis-Plus 的现代开发模式
  • 基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
  • QT构建即时通讯应用--WebSocket全面解析与实战指南
  • 3. pandas笔记之:创建