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

Spark执行Action操作访问Wonderware Historian DB时抛出OLE DB连接错误

问题:Spark操作Wonderware Historian SQL DataFrame触发执行错误

已通过Spark成功加载Wonderware Historian SQL数据库的DataFrame,执行df.columns查看列名,返回结果如下:

'TagName',
'Value',
'vValue',
'Quality',
'QualityDetail',
'OPCQuality',
'wwTagKey',
'wwRowCount',
'wwResolution',
...

但执行任何Action操作(如df.select('TagName').head())都会触发错误,错误信息如下:

org.apache.spark.SparkException: Job aborted due to stage failure:
Task 0 in stage 13.0 failed 4 times, most recent failure: Lost task
0.3 in stage 13.0 (TID 55) (10.252.13.132 executor driver): com.microsoft.sqlserver.jdbc.SQLServerException: An error occurred
during the current command (Done status 0). Cannot execute the query
"SELECT Tbl1001.TagName Col1005 FROM Runtime.dbo.History Tbl1001"
against OLE DB provider "INSQL" for linked server "INSQL".

可行解决方向

  • 检查链接服务器权限:确认Spark使用的SQL Server账号对INSQL链接服务器拥有足够权限,能直接执行跨服务器查询。部分场景下,链接服务器的权限配置会限制此类查询执行。
  • 禁用Spark查询下推:Spark默认会把查询逻辑下推到数据源执行,但Wonderware的INSQL OLE DB驱动可能不兼容Spark生成的嵌套查询格式。可通过关闭下推优化解决:
    // Scala示例:读取数据时禁用查询下推
    val props = new java.util.Properties()
    props.setProperty("user", "你的账号")
    props.setProperty("password", "你的密码")
    val df = spark.read
      .option("pushDownPredicate", "false")
      .option("pushDownAggregate", "false")
      .jdbc("SQLServer链接地址", "Runtime.dbo.History", props)
    
  • 改用Wonderware原生接口读取:Wonderware Historian提供REST API等专用数据读取接口,相比通过SQL链接服务器,直接使用原生接口可避免OLE DB驱动的兼容性问题,数据读取更稳定。
  • 更新驱动版本:确保SQL Server JDBC驱动与INSQL OLE DB驱动版本匹配,升级到最新稳定版可能解决兼容性bug。

内容的提问来源于stack exchange,提问作者Oliver Angelil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:02:21