Apache spark 如何在EMR中减少Apache Spark的日志?

Apache spark 如何在EMR中减少Apache Spark的日志?,apache-spark,log4j,log4j2,emr,amazon-emr,Apache Spark,Log4j,Log4j2,Emr,Amazon Emr,关于在AWS EMR上运行的Apache Spark作业,我有一个问题。每次执行Spark作业时,它都会生成大量日志,在我的情况下,日志大小约为5-10GB,但80%的日志是信息(无用),如何减少这些日志 Spark使用log4j2将日志级别更改为“警告”,以避免不必要的日志,但由于Spark中不同组件的日志来自Thank的一些日志,来自EMR的一些日志,因此合并在一起。那么如何解决这个问题呢?有人有这样的经历吗?因为对我来说,我不想重新配置集群中的每个节点 我试过下面的解决方案,似乎在EMR中

关于在AWS EMR上运行的Apache Spark作业,我有一个问题。每次执行Spark作业时,它都会生成大量日志,在我的情况下,日志大小约为5-10GB,但80%的日志是信息(无用),如何减少这些日志

Spark使用log4j2将日志级别更改为“警告”,以避免不必要的日志,但由于Spark中不同组件的日志来自Thank的一些日志,来自EMR的一些日志,因此合并在一起。那么如何解决这个问题呢?有人有这样的经历吗?因为对我来说,我不想重新配置集群中的每个节点

我试过下面的解决方案,似乎在EMR中不起作用

Logger logger = LogManager.getLogger("sparklog");
logger.setlevel()
下面是xml配置

String used to match the log4j2.xml configuration files
<Configuration status="WARN" monitorInterval="300">////reload the configuration file each 300 seconds
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> //// control output format
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="sparklog" level="warn" additivity="false">//// configuration the  myloger loger level
            <AppenderRef ref="Console" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
用于匹配log4j2.xml配置文件的字符串 ////每300秒重新加载一次配置文件 ////控制输出格式 ////配置myloger记录器级别
因为没有人回答我的问题,所以我在这里找到了自己的解决方案。 1.将配置文件上载到主节点

scp -i ~/.ssh/emr_dev.pem /Users/x/log4j_files/log4j.properties hadoop@ec2-xxx-xxx-xxx.eu-west-1.compute.amazonaws.com:/usr/tmp/
2.在提交脚本中,只需附加

"--files": "/usr/tmp/log4j.properties"
上述解决方案对我来说运行正常。

创建EMR时,应在config.json中将日志级别设置为INFO

创建EMR时使用config.json

aws emr create-cluster --release-label emr-5.27.0 --applications Name=Spark \
--instance-type m4.large --instance-count 2 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --configurations https://s3.amazonaws.com/mybucket/myfolder/config.json
pyspark示例,用于在故障排除时将警告设置为默认调试

aws emr create-cluster --release-label emr-5.27.0 --applications Name=Spark \
--instance-type m4.large --instance-count 2 --service-role EMR_DefaultRole --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole --configurations https://s3.amazonaws.com/mybucket/myfolder/config.json
from org.apache.spark.sql import SparkSession

spark = SparkSession.builder().master("/emr/spark/master").getOrCreate()

#normal run
spark.sparkContext.setLogLevel("WARN") 

#troubleshooting
spark.sparkContext.setLogLevel("DEBUG")