【问题标题】:Hadoop custom writableHadoop自定义可写
【发布时间】:2023-03-13 11:21:01
【问题描述】:

我试图在作业的输出中写入多个值。为此,我使用了实现接口Writable 的自定义可写对象。这个自定义的可写,我称之为CompositeWritable,实现了读写两种方法。当我运行作业时,输出如下所示:

key CompositeWritable@5fdf281b
lean    CompositeWritable@2153b010
likely  CompositeWritable@2153b010

我错过了什么?在作业规范中,我将输出值类设置为CompositeWritable。我错过了任何其他设置吗?

【问题讨论】:

  • 当您说“输出”时,您是在查看输出文件吗?你用的是什么输出格式?这似乎是从 java.lang.Object 继承的“toString”的输出。
  • 是的,输出文件。没有指定输出格式,我猜是TextOutputFormat。
  • 尝试显式设置job.setOutputFormatClass(TextOutputFormat.class),但结果相同。
  • 发布您的可写代码

标签: java hadoop


【解决方案1】:

TextOutputFormat 似乎依赖于可写 (see line 80) 中的 toString 方法。在 CompositeWritable 类上实现对 toString 的合理覆盖,例如,您可以在包含的项目上调用字符串并将它们与分隔符一起附加。

【讨论】:

    【解决方案2】:

    你不见了

    @Override
        public String toString() {
            return ___________;
        }
    

    例子:

    @Override
            public String toString() {
                return key+","+value;
            }
    

    这里的键和值使用“,”分隔符分隔。您可以根据需要使用任何分隔符。

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 2016-04-13
      • 2018-06-20
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多