hadoop - 如何使用SequenceFileInputFormat将字节数组序列化为本地文件

标签 hadoop file-io mapreduce bytearray protocol-buffers

我想这样做:protobuf->字节数组-> | HTTP post | ->字节数组->序列化为本地文件-> Hadoop中的MapReduce。

  • 我想做的第一种方法是使用BufferedWriter / FileWriter将字节数组作为String写入带有'\ n'或另一个定界符的本地文件中。这种方式的问题是写入的字节数组可能包含'\ n'或其他定界符。
  • 字节数组-> protobuf-> json,然后将json序列化为文件。它将遇到与上述相同的问题。
  • Hadoop中有一个名为SequenceFileInputFormat的InputFormat,它似乎在Hadoop的MapReduce中使用。我的问题是如何在本地将字节数组序列化为该格式的文件?

  • 或任何其他方式可以解决我的问题?谢谢。

    最佳答案

    好的,问题现在已经解决。

    org.apache.hadoop.io.SequenceFile.Writer为我工作。

    Configuration conf = new Configuration();
    LocalFileSystem fs = FileSystem.getLocal(conf);
    SequenceFile.Writer writer = SequenceFile.createWriter(fs, conf, new Path("~/test"), LongWritable.class, BytesWritable.class);
    LongWritable key = new LongWritable(1L);
    BytesWritable val = new BytesWritable(protobufObject.toByteArray());
    writer.append(key, val);
    writer.close();
    

    关于hadoop - 如何使用SequenceFileInputFormat将字节数组序列化为本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20703541/

    相关文章:

    hadoop - HBASE 0.94.1 与 hadoop 的兼容性

    hadoop - beeline 和 spark-shell 可以为同一个 apache spark 显示不同的数据库吗?

    azure - Azure HDInsights 中的 headnodehost

    c++ - 在 linux 中使用两个进程读取文件?

    java - Hadoop:二级排序不起作用

    hadoop - Hadoop “not getting namenode with jps command”为什么namenode没有启动

    c - 递归地反转链表数组并不是按顺序反转所有节点

    c - 在C编程中使用结构体的双指针将矩阵从文本文件读取到二维数组中

    couchdb - 映射/减少 Couchbase 和 CloudAnt 之间的差异

    hadoop - 如何在 MapReduce 结果后将输出文件导出回 CSV