如何从 .net 应用程序禁用 Spark 控制台的所有日志记录信息

问题描述 投票:0回答:3

如何在不登录控制台的情况下显示结果? 在运行执行时我有这样的,但有很多行:

20/08/28 13:35:27 INFO MemoryStore: MemoryStore started with capacity 366.3 MB
20/08/28 13:35:27 INFO SparkEnv: Registering OutputCommitCoordinator
20/08/28 13:35:27 INFO Utils: Successfully started service 'SparkUI' on port 4040.
20/08/28 13:35:27 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://
20/08/28 13:35:27 INFO SparkContext: Added JAR file:/C:/
20/08/28 13:35:27 INFO Executor: Starting executor ID driver on host localhost

不幸的是,我的操作后没有任何结果。我发现文件 log4j.properties.template,将所有内容更改为 WARN,但仍然存在相同的问题。我还更改了日期时间格式以检查文件是否已读取。但格式仍然相同,例如

log4j.appender.console.layout.ConversionPattern=%d{yy:MM:dd HH:mm:ss} %p %c{1}: %m%n.
所以,这就是我决定不读取该文件的原因。 我还在我的 .cs 文件中写了

var sc = new SparkContext(new SparkConf());
            sc.SetLogLevel("WARN");

在我的代码中是这样的

namespace mySparkApp
{
    class Program
    {
        static void Main(string[] args)
        {

            //Logger.getLogger("org").setLevel(Level.OFF);
            //Logger.getLogger("akka").setLevel(Level.OFF);

            var sc = new SparkContext(new SparkConf());
            sc.SetLogLevel("WARN");

            // Create a Spark session
            SparkSession spark = SparkSession
                .Builder()
                .AppName("word_count_sample")
                .GetOrCreate();

            // Create initial DataFrame
            DataFrame dataFrame = spark.Read().Text("input.txt");

            // Count words
            DataFrame words = dataFrame
                .Select(Functions.Split(Functions.Col("value"), " ").Alias("words"))
                .Select(Functions.Explode(Functions.Col("words"))
                .Alias("word"))
                .GroupBy("word")
                .Count()
                .OrderBy(Functions.Col("count").Desc());

            // Show results
            words.Show();

            // Stop Spark session
            spark.Stop();
        }
    }
}

然后重新启动我的机器,但我也有同样的情况。

.net apache-spark logging console log4j
3个回答
0
投票

您需要将文件

log4j.properties.template
重命名/复制到
log4j.properties

如果您想查看更少的日志,可以将日志级别设置为

ERROR
而不是
WARN

您还可以放置这些行以避免记录您遇到的其他错误。

log4j.logger.org.apache.spark.util.ShutdownHookManager=OFF
log4j.logger.org.apache.spark.SparkEnv=ERROR

来源


0
投票

所以...我的挣扎是:

  1. 从文件夹conf

    中删除log4..blalalal.template中的模板字
  2. 注释 # 该文件中的最后 2 行并添加

    log4j.logger.org.apache.spark.util.ShutdownHookManager=关闭 log4j.logger.org.apache.spark.SparkEnv=关闭

  3. 到处出发。

结果好多了,但仍然让我烦恼。 因为应用程序会吃掉所有异常。

C:\Users\User\mySparkApp>%SPARK_HOME%\bin\spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local bin\Debug\net5.0\microsoft-spark-2.4.x-0.10.0.jar dotnet bin\Debug\net5.0\mySparkApp.dll
20/12/27 22:29:39 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[2020-12-27T19:29:39.8205092Z] [USER-PC] [Info] [ConfigurationService] Using port 51569 for connection.
[2020-12-27T19:29:39.8243891Z] [USER-PC] [Info] [JvmBridge] JvMBridge port is 51569

+------+-----+
|  word|count|
+------+-----+
|  .NET|    3|
|Apache|    2|
|   app|    2|
|  This|    2|
| Spark|    2|
| World|    1|
|counts|    1|
|   for|    1|
| words|    1|
|  with|    1|
| Hello|    1|
|  uses|    1|
+------+-----+

我不认为我已经完成了,因为如果你有例外 - 那么你需要看到他们,但是......

对于测试来说,这可以作为一个决定。 感谢所有参与对话的人。做出的决定实在令人难以理解。不过谢谢。


0
投票

奔向2024年;请注意,您的“log4j”版本可能已升级为“2”,因此上面显示的条目如下所示(将“log4j”更改为“log4j2”)

log4j2.logger.org.apache.spark.util.ShutdownHookManager=关闭 log4j2.logger.org.apache.spark.SparkEnv=错误

© www.soinside.com 2019 - 2024. All rights reserved.