Spark设置日志打印级别

一、修改Spark-core包默认的日志级别

spark中提供了log4j的方式记录日志。可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 log4j.properties 来启用log4j配置。但这个配置为全局配置,不能单独配置某个job的运行日志。Spark-core包设置默认的日志级别为info。将文件中的log4j.rootCategory=INFO, console修改为log4j.rootCategory=ERROR, console即可,如下图所示:
在这里插入图片描述
此时,在控制台调试spark程序就没有了INFO信息。
在这里插入图片描述

二、在Spark程序中设置日志打印级别:

        JavaSparkContext sc = new JavaSparkContext(conf);
        //设置日志输出级别
		sc.setLogLevel("ERROR");
		JavaRDD<String> lines = sc.textFile("input.txt");

三、 在maven项目中设置Spark程序的日志打印级别:

  1. 引入logger4j和slf4j的依赖
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
  1. 在代码中加入
        Logger.getLogger("org").setLevel(Level.ERROR);
### 配置或找到虚拟环境中 Spark 日志文件的位置 为了在虚拟环境中配置或找到 Spark日志文件位置,可以按照如下方式进行操作: #### 修改 `log4j.properties` 文件来指定日志级别和输出路径 通常情况下,在 Spark 安装目录下的 `conf` 文件夹中存在名为 `log4j.properties.template` 的模板文件。此文件用于定义日志记录的行为,包括日志等级以及日志的输出目的地。 应当复制该模板并重命名为 `log4j.properties`: ```bash cp log4j.properties.template log4j.properties ``` 编辑上述创建好的 `log4j.properties` 文件以调整日志行为。例如,要更改日志文件的位置到 `/var/log/spark/app.log` 并设置日志级别为 INFO 可做如下修改[^1]: ```properties # Set everything to be logged to the console at INFO level. log4j.rootCategory=INFO, fileAppender # Define a rolling file appender that writes messages into separate files based on date and time. log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.fileAppender.File=/var/log/spark/app.log log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n ``` #### 设置环境变量控制历史服务器的日志存储路径 对于想要追踪已完成应用程序的历史数据的情况,则需通过配置 `SPARK_HISTORY_OPTS` 来指明这些信息应存放在哪里。这可以通过编辑 `spark-env.sh` 实现,比如下面的例子展示了怎样让 Web UI 访问端口设为 18080 同时把日志储存在 HDFS 上的一个特定地址内,并保留最近三十天内的应用记录[^4]: ```bash export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 \ -Dspark.history.fs.logDirectory=hdfs://namenode:port/path/to/logs \ -Dspark.history.retainedApplications=30" ``` 请注意替换其中的 namenode 和 port 为你自己的集群参数。 #### 使用命令行工具查看当前运行实例产生的日志Spark 应用正在执行期间,也可以利用命令行工具实时监控其生成的日志流。假设已经设置了合适的日志收集机制(如前述),那么可以直接读取相应的日志文件;或者借助 YARN ResourceManager 提供的功能获取容器级别日志输出。 如果是在本地模式下启动 Spark Shell 或提交作业给独立调度器的话,一般会直接打印标准错误输出至终端窗口里,因此只需关注那里即可获得即时反馈。 #### 查找默认日志位置 如果没有特别设定过其他地方,默认情况下 Spark 将会在工作节点上的 `$SPARK_HOME/work` 下面按 Application ID 组织临时的工作空间与日志资料。此外,驱动程序的标准输出会被导向到它所处的操作系统的相应位置,具体取决于操作系统及其配置方式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值