You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Synapse中Spark Job连接私有网络Oracle数据库失败咨询

Synapse Spark作业连接私有网络Oracle数据库的解决方案

核心结论

Spark作业可以连通私有网络(10.x.x.x)中的Oracle数据库,但需要完成网络打通、权限配置和连接参数的正确设置。

步骤1:获取Spark池的网段信息

要确定防火墙开放方向,首先拿到Spark池所在的子网网段:

  • 登录Synapse Studio,进入左侧菜单栏的Manage > Apache Spark pools
  • 选中目标Spark池,切换到Properties标签页,查看Virtual network和Subnet字段,即可获取Spark池所在的子网IP范围(例如10.y.y.y/24)

步骤2:打通网络连通性

  • VNet互连:确保Spark池所在的虚拟网络与Oracle数据库所在的10.x.x.x VNet已配置虚拟网络对等互连(VNet Peering),或通过VPN/ExpressRoute建立跨网络连通
  • 防火墙/安全组配置:在Oracle数据库端的防火墙、NSG(网络安全组)中,添加规则允许Spark池子网的IP段访问Oracle的监听端口(默认1521)
  • 私有端点验证:如果你的Linked Service使用了Managed Private Endpoint,确认该端点已被Oracle端批准,且Oracle的网络策略允许该私有端点的IP访问

步骤3:正确配置Spark JDBC连接

确保Spark作业中的JDBC参数符合Oracle瘦客户端要求:

// 示例Scala代码
val jdbcUrl = "jdbc:oracle:thin:@//10.x.x.x:1521/你的数据库服务名"
val connProps = new java.util.Properties()
connProps.put("user", "数据库用户名")
connProps.put("password", "数据库密码")
connProps.put("driver", "oracle.jdbc.OracleDriver")

// 读取数据
val oracleDF = spark.read.jdbc(jdbcUrl, "目标表名", connProps)
  • 注意:如果Spark池未预装Oracle JDBC驱动,需通过Synapse的Library管理上传ojdbc8.jar,或在作业配置中添加依赖

步骤4:排查常见问题

  • 先验证Linked Service的连通性:在Synapse的Linked Service页面点击Test connection,确认基础网络连通正常
  • 若Spark作业仍报错,可在作业中添加简单的网络测试命令(如!telnet 10.x.x.x 1521,需确保Spark池允许执行shell命令),排查端口是否可达

内容的提问来源于stack exchange,提问作者Ricardo Olvera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:33:22