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

如何增加Synapse Analytics Notebook错误输出行数查看完整Py4JJavaError

解决PySpark Synapse Analytics Notebook中Py4JJavaError错误截断问题

捕获异常并打印完整堆栈

在JDBC代码外层包裹try-except块,手动提取Java异常的完整堆栈信息:

from py4j.protocol import Py4JJavaError

try:
    # 替换为你的JDBC连接逻辑
    df = spark.read.format("jdbc") \
        .option("url", "jdbc:your-database-url") \
        .option("dbtable", "target-table") \
        .option("user", "your-username") \
        .option("password", "your-password") \
        .load()
    df.show()
except Py4JJavaError as e:
    # 打印完整Java异常堆栈
    e.java_exception.printStackTrace()
    # 同时输出异常文本描述
    print("\n异常详情:", str(e.java_exception))

调整Spark日志配置避免截断

在Notebook开头添加以下配置,强制日志输出完整内容:

# 调整Spark SQL字段显示数量,避免结果截断
spark.conf.set("spark.sql.debug.maxToStringFields", "100")

# 配置Log4j输出完整异常
sc = spark.sparkContext
sc.setLogLevel("DEBUG")
# 获取Log4j根日志器并设置参数
root_logger = sc._jvm.org.apache.log4j.Logger.getRootLogger()
root_logger.setLevel(sc._jvm.org.apache.log4j.Level.DEBUG)
# 设置日志格式,确保堆栈完整输出
layout = sc._jvm.org.apache.log4j.PatternLayout("%d{ISO8601} %-5p %c{1}:%L - %m%n")
for appender in root_logger.getAllAppenders():
    appender.setLayout(layout)

查看Synapse作业完整日志

  1. 进入Synapse Studio的Monitor面板
  2. 选择Spark applications,找到当前运行的作业
  3. 点击作业ID进入详情页,切换到Logs标签,查看Driver和Executor的完整日志(这里的日志不会被截断)

启用JDBC驱动详细日志

部分JDBC驱动支持通过连接参数开启详细日志,比如:

df = spark.read.format("jdbc") \
    .option("url", "jdbc:your-database-url?logLevel=TRACE") \
    .option("dbtable", "target-table") \
    .option("user", "your-username") \
    .option("password", "your-password") \
    .load()

具体参数需参考你使用的JDBC驱动文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:00:04