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

PySpark本地环境OpenLineage日志无输出问题排查求助

问题诊断与修复方案

核心问题分析

你的OpenLineage日志未输出,主要源于三个配置错误:

  • OpenLineage参数未加spark.前缀,导致Agent无法识别
  • Log4j配置路径引用不正确,日志规则未生效
  • 日志记录的包范围不够全面,未覆盖所有OpenLineage组件

修正后的完整配置

1. 更新PySpark代码

将OpenLineage配置参数添加spark.前缀,并修正Log4j路径为相对路径:

from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession.builder \
        .appName("PySpark OpenLineage Example") \
        .config("spark.driver.extraJavaOptions", "-Dlog4j.configuration=file:./log4j-openlineage.xml") \
        .config("spark.openlineage.url", "http://localhost:5000")  \
        .config("spark.openlineage.backend", "io.openlineage.spark.agent.backends.ConsoleLoggingBackend") \
        .config("spark.openlineage.namespace", "test") \
        # 可选:开启调试日志排查问题
        .config("spark.openlineage.debug", "true") \
        .getOrCreate()

    # 业务逻辑保持不变
    df = spark.read.text("some_input_file.txt")
    df.show()

    transformed_df = df.selectExpr("length(value) as length")
    transformed_df.show()

    transformed_df.write.mode('overwrite').csv("some_output_file.csv")

    spark.stop()

2. 调整Log4j配置文件

扩展日志记录的包范围到io.openlineage主包,确保所有组件日志都能输出:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="io.openlineage" level="info">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

3. 修正spark-submit命令

显式指定driver类路径,确保Agent JAR被正确加载:

spark-submit \
  --jars openlineage-spark-1.4.1.jar \
  --files log4j-openlineage.xml \
  --driver-class-path openlineage-spark-1.4.1.jar \
  openlineage_spark.py

4. 版本兼容性验证

确认你的Spark版本与OpenLineage Agent匹配:

  • OpenLineage 1.4.1兼容Spark 3.1.x/3.2.x/3.3.x
  • 若使用Spark 3.0或更低版本,需降级OpenLineage Agent到1.0.x系列

验证结果

执行任务后,控制台会输出OpenLineage的事件日志,示例如下:

14:22:15.678 [main] INFO io.openlineage.spark.agent.backends.ConsoleLoggingBackend - {"eventType":"START","run":{"runId":"abc123"},"job":{"namespace":"test","name":"PySpark OpenLineage Example"},"inputs":[],"outputs":[]}

若仍无输出,检查spark.openlineage.debug=true的调试日志,确认Agent是否成功加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:25:38