gpt4 book ai didi

java - 多个输出突然不写任何输出?

转载 作者:行者123 更新时间:2023-12-02 21:55:08 25 4
gpt4 key购买 nike

突然有多个输出未将任何输出写入目标。

我使用了多个输出的自定义实现,只是在其中进行了更改:

  if((ch == '/') || (ch == ':')||(ch == '-')||(ch =='.'))
{
continue;
}

在方法上,如下图所示。但是一直以来都在起作用,突然间它不起作用。它没有向输出目录写入任何内容:

/ home / users / mlakshm /

请帮助!!!
 private static void checkTokenName(String namedOutput) {
if (namedOutput == null || namedOutput.length() == 0) {
throw new IllegalArgumentException(
"Name cannot be NULL or emtpy");
}
for (char ch : namedOutput.toCharArray()) {
if ((ch >= 'A') && (ch <= 'Z')) {
continue;
}
if ((ch >= 'a') && (ch <= 'z')) {
continue;
}
if ((ch >= '0') && (ch <= '9')) {
continue;
}
if((ch == '/') || (ch == ':')||(ch == '-')||(ch =='.'))
{
continue;
}
throw new IllegalArgumentException(
"Name cannot be have a '" + ch + "' char");
}
}

最佳答案

您可能会注意到,checkTokenName()方法是确保输出名称有效。现在,您正在尝试修改MultipleOutputs的非常必要的部分,您不应该这样做。首先有许多原因不允许使用/:.-这样的字符:

  • 许多文件系统不允许文件名中的某些字符
  • 使用MultipleOutputs,可以写入多个文件,但是可以将其写入指定的目录中,而不是在任何所需的位置。
  • 您可能已经注意到,对于以下命名输出:

    //为作业定义其他基于单个文本的输出“文本”
    MultipleOutputs.addNamedOutput(job,“text”,TextOutputFormat.class,
    LongWritable.class,Text.class);
    输出文件名将为text-0000,text0001等。

  • 因此,如果您想在其他目录中编写代码,则最好改写 MultipleTextOutputFormat;如果您不自由使用旧的API,则最好自己写 HDFS / S3,而不要依靠hadoop来做到这一点。

    关于java - 多个输出突然不写任何输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462100/

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