首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InputStream到Hadoop SequenceFile

InputStream到Hadoop SequenceFile
EN

Stack Overflow用户
提问于 2014-04-07 17:20:44
回答 1查看 1.3K关注 0票数 0

我有一个表示序列文件的通用输入流。我想从它创建一个SequenceFile.Reader或类似的类,而不需要将输出流写入磁盘上的临时文件。是否有什么东西会让我从输入流到允许我从输入流读取键/值对的东西。

EN

回答 1

Stack Overflow用户

发布于 2014-04-07 19:07:47

由于某些原因,似乎没有关于当前SequenceFile.Reader类的任何文档,但是仔细查看Hadoop 2.0+的代码,我相信以下内容会有效:

代码语言:javascript
复制
FSDataInputStream inputStream = new FSDataInputStream (rawInputStream);
Option isOption = SequenceFile.Reader.stream(inputStream);
SequenceFile.Reader reader = new SequenceFile.Reader(hadoopConf,isOption);

您还可能对选项startlength感兴趣,其中start是读取序列文件之前要跳过的字节数,length是从流读取的字节数。设置该读取器可能如下所示:

代码语言:javascript
复制
FSDataInputStream inputStream = new FSDataInputStream (rawInputStream);
Option isOption = SequenceFile.Reader.stream(inputStream);
Option lengthOption = SequenceFile.Reader.length(100000);
Option startOption = SequenceFile.Reader.start(10);
SequenceFile.Reader reader = new SequenceFile.Reader(hadoopConf,isOption,lengthOption,startOption);

最后,一旦构建了您的Reader,您就可以以如下方式读取您的值:

代码语言:javascript
复制
Text key = new Text();
Text val = new Text();
while (reader.next(key,val)) {
   //do stuff
}

同样,我根本没有测试过这段代码,但这在理论上是可行的。如果您没有使用Hadoop 2.0+,我不知道该告诉您什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22919013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档