当前位置: 首页 > 面试题库 >

如何读取hadoop顺序文件?

郎雪风
2023-03-14
问题内容

我有一个顺序文件,它是hadoop map-
reduce作业的输出。在此文件中,数据以键值对的形式写入,而值本身是一个映射。我想将值读取为MAP对象,以便我可以进一步处理它。

    Configuration config = new Configuration();
    Path path = new Path("D:\\OSP\\sample_data\\data\\part-00000");
    SequenceFile.Reader reader = new SequenceFile.Reader(FileSystem.get(config), path, config);
    WritableComparable key = (WritableComparable) reader.getKeyClass().newInstance();
    Writable value = (Writable) reader.getValueClass().newInstance();
    long position = reader.getPosition();

    while(reader.next(key,value))
    {
           System.out.println("Key is: "+textKey +" value is: "+val+"\n");
    }

程序输出:关键是:[this is key]值是:{abc = 839177,xyz = 548498,lmn = 2,pqr = 1}

在这里,我以字符串的形式获取值,但我希望将其作为map的对象。


问题答案:

检查API文档中的SequenceFile#next(Writable,Writable)

while(reader.next(key,value))
{
       System.out.println("Key is: "+textKey +" value is: "+val+"\n");
}

应该替换为

while(reader.next(key,value))
{
       System.out.println("Key is: "+key +" value is: "+value+"\n");
}

使用SequenceFile.Reader#getValueClassName获取SequenceFile中的值类型。SequenceFile在文件头中具有键/值类型。



 类似资料:
  • 我在标准Spring Boot应用程序的resources文件夹下有以下文件。Spring忙碌的profile设置为dev,属性文件的读取顺序是什么。?

  • 问题内容: 我实现了一个小的IO类,它可以从不同磁盘(例如,两个包含相同文件的硬盘)上的多个相同文件中读取数据。在顺序情况下,两个磁盘在文件上的平均读取速度均为60MB / s,但是当我进行交错操作(例如4k磁盘1、4k磁盘2然后合并)时,有效读取速度会降低到40MB / s而不是增加吗? 上下文:Win 7 + JDK 7b70、2GB RAM,2.2GB测试文件。基本上,我尝试以穷人的方式模仿

  • 第一次使用python。我正在尝试浏览包含段落和表格的word文档。我已经弄清楚了如何使用以下代码浏览文档中的所有段落和文档中的所有表格: 但我正试图找到一种方法,像任何阅读它的人一样,有序地浏览这份文件。所以如果我们有一份文件包含: 它会按照这个顺序读。我想这样做的原因是,根据表格后面的段落,我想对它执行不同的操作。

  • 我正在使用java学习hadoop mapreduce,我有一个示例文件,数据如下所示,我如何跳过处理这个文件中的标题行…因为当我看到映射器输入时,它也在考虑标题… 滚动noschool namenameageGenderclasssubjectmarks

  • 问题内容: 我有一个Java ee应用程序,在该应用程序中,我使用servlet来打印使用log4j创建的日志文件。在读取日志文件时,通常会寻找最后一个日志行,因此,如果servlet以相反的顺序打印日志文件,则它会更加有用。我的实际代码是: 我在互联网上找到的实现涉及使用StringBuffer并在打印之前加载所有文件,难道没有找到找到文件结尾并读取内容直到文件开头的代码轻巧的方式吗? 问题答案

  • 问题内容: 可以说我在一个文件夹中有三个文件:file9.txt,file10.txt和file11.txt,我想按此特定顺序读取它们。谁能帮我这个? 现在我正在使用代码 它先读取file10.txt,然后读取file11.txt,然后读取file9.txt。 有人可以帮助我如何获得正确的订单吗? 问题答案: 文件系统上的文件未排序。您可以使用函数自己对生成的文件名进行排序: 请注意,您代码中的调