gpt4 book ai didi

java - 如何在 hadoop 应用程序中覆盖 InputFormat 和 OutputFormat

转载 作者:可可西里 更新时间:2023-11-01 15:18:21 26 4
gpt4 key购买 nike

我有一个应用程序需要读取一个文件,该文件是 ArrayList 的序列化结果。(ArrayList<String>,此列表中有 50000 条记录,大小:20MB)我不知道如何将数据读入 hadoop 平台。我只是觉得我需要覆盖 InputFormat 和 OutpurFormat。我是 hadoop 平台的初学者。你能给我一些建议吗?

谢谢,

郑。

最佳答案

首先,您需要扩展 FileInputFormat,值得注意的是实现抽象 FileInputFormat.createRecordReader方法。

您可以查看类似 LineRecordReader 的源代码(这是 TextInputFormat 用来处理文本文件的)。

从那里开始,您几乎只能靠自己了(即,这取决于您的 ArrayList 是如何序列化的)。查看 LineRecordReader 的源代码,并尝试将其与 ArrayList 的序列化方式联系起来。

其他一些注意事项,你的文件格式是可拆分的吗? IE。你能找到文件中的偏移量并从那里恢复流吗(文本文件可以,因为它们只是向前扫描到当前行的末尾,然后从那里开始)。如果您的文件格式使用压缩,您还需要考虑到这一点(例如,您不能随机查找 gzip 文件中的某个位置)。默认情况下 FileInputFormat.isSplittable 将返回 true,您可能希望最初将其覆盖为 false。如果您坚持使用“unsplittable”,请注意您的文件将由单个映射器处理(无论大小)。

关于java - 如何在 hadoop 应用程序中覆盖 InputFormat 和 OutputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759651/

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