gpt4 book ai didi

python - stderr 中仍然有数据,而我在 shell 中执行命令时不应该有数据

转载 作者:可可西里 更新时间:2023-11-01 16:08:53 27 4
gpt4 key购买 nike

我有这个在本地执行命令的函数 [1],但我用函数调用这个命令 hdfs dfs -cat/user/xubuntu/digests/output1-1444497943/part-m-00000.digest,我在 stdout 中得到正确的输出,在 stderr 中得到 log4j 数据。由于在 stderr 中获取数据,我无法确定执行是否成功。如果执行成功,为什么我在 stderr 中获取数据?

[1] 在本地执行的函数。 def executeCommand(命令):

  logging.debug("Executing: %s" % command)
if "JAVA_HOME" not in os.environ:
os.environ["JAVA_HOME"] = JAVA_HOME

logging.debug("command: %s" % command)

try:
process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
if len(err) > 0: # there is an exception
raise ValueError("Exception:\n" + err)
except ValueError as e:
return e.message
return out

[2] stdout 和 stderr 中的输出

output in stdout: '{"mapreduce.file.input.name":"hdfs:\\/\\/hadoop-coc-1:9000\\/input1\\/b.txt","mapreduce.file.output.name":"\\/output1-1444497943\\/part-m-00000","mapreduce.digest":"1b344587f6c1398e7aaa59cd5f01b585"}'

output in stderr: '15/10/10 15:25:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n'

最佳答案

Hadoop 将 INFO 及以上级别的所有消息记录到控制台的 stderr

如前所述here :

Hadoop 默认将消息记录到 Log4jLog4j 通过 classpath 上的 log4j.properties 配置。该文件定义了记录的内容和位置。 对于应用程序,默认的根记录器是“INFO,console”,它将 INFO 及以上级别的所有消息记录到控制台的 stderr。服务器记录到“INFO,DRFA”,它记录到一个每天滚动的文件。日志文件名为 $HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-.log。

关于python - stderr 中仍然有数据,而我在 shell 中执行命令时不应该有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com