Java Hadoop SequenceFile大小

Java Hadoop SequenceFile大小,java,hadoop,size,mahout,sequencefile,Java,Hadoop,Size,Mahout,Sequencefile,我正在创建Hadoop向量的键值对的HashMap,它存储在SequenceFile中。为了提高效率,我想知道键值对的向量有多长,这样我就可以用适当的大小初始化HashMap 我使用了Mahout的seqdumper,它在每个转储向量的末尾追加一个计数。我已经研究了它的代码,但它使用了一个简单的迭代计数器(对于每一行计数器+++),因此不是我想要的 看起来也很有希望,所以我调查了一下。但是调试器显示它不包含任何条目 对于SequenceFile中的Hadoop向量,是否有其他方法可以快速获得类似

我正在创建Hadoop向量的键值对的HashMap,它存储在SequenceFile中。为了提高效率,我想知道键值对的向量有多长,这样我就可以用适当的大小初始化HashMap

我使用了Mahout的
seqdumper
,它在每个转储向量的末尾追加一个计数。我已经研究了它的代码,但它使用了一个简单的迭代计数器(对于每一行
计数器+++
),因此不是我想要的

看起来也很有希望,所以我调查了一下。但是调试器显示它不包含任何条目

对于SequenceFile中的Hadoop向量,是否有其他方法可以快速获得类似于
.size()
的方法

编辑:这是我将要转换为地图的seqdumper的输出。具体来说,每个键值对都是一个IntWritable/NamedVector对。我希望创建一个从密钥号到URI字符串的映射。总共有46599个键-值对,由文件末尾的
seqdumper
追加

Input Path: luceneVectors
Key class: class org.apache.hadoop.io.IntWritable Value Class: class org.apache.mahout.math.VectorWritable
Key: 0: Value: http://data.artsholland.com/production/73adae07-78c6-4180-93a4-34802090b5f1:{22118:0.18376858424635545,20381:0.40144184831236357,53753:0.2605347739121081,51569:0.2578896608715637,21930:0.2277873354603338,63035:0.27765920678967304,36979:0.2709104089668357,68351:0.15788776111071648,19436:0.2988119565549418,17991:0.12435264873296237,10356:0.3276902508762499,3410:0.27239123806574506,62942:0.18961849195965186,32527:0.24827631823639457,69909:0.11723303910369048,19832:0.2138117449778048}
Key: 1: Value: http://data.artsholland.com/production/c9fcc92b-18bb-4bfb-af52-380707f8d0d7:{41167:0.07191351238480857,61391:0.07496730342220936,[...]
[...],19156:0.0687215948604245}
Count: 46599

不确定,我的答案是否有用,但是如果您需要知道seq文件中有多少个键,可以使用MapFile而不是SequenceFile。 知道indexInterval后,您可以通过读取密钥文件来估计密钥数。如果将indexInterval设置得相对较大,则可以维护较小的索引文件,并且仍然可以估计键的数量。 作为额外的奖励,您可以获得密钥的采样,这可以帮助您进一步优化


有关SequenceFile不同版本的更多详细信息,请参见此处

不确定,我的答案是否有用,但是如果您需要知道seq file中有多少键,可以使用MapFile而不是SequenceFile。 知道indexInterval后,您可以通过读取密钥文件来估计密钥数。如果将indexInterval设置得相对较大,则可以维护较小的索引文件,并且仍然可以估计键的数量。 作为额外的奖励,您可以获得密钥的采样,这可以帮助您进一步优化


有关SequenceFile不同版本的更多详细信息,请参见此处

能否提供有关序列文件中使用的键/值可写类型的更多信息?我已添加了一个片段,其中包含我试图转换为映射的内容。通读该片段并计算行数,没有其他方法。我明白了。那就这样吧。如果有人有答案,我仍然愿意回答。有没有办法在SequenceFile.MetaData写入后向SequenceFile.MetaData添加条目?因为这样您就可以添加写入元数据的条目数。您可以提供有关序列文件中使用的键/值可写类型的更多信息吗?我添加了一个片段,其中包含我试图转换为映射的内容。通读它并计算行数,没有其他方法。我明白了。那就这样吧。如果有人有答案,我仍然愿意回答。有没有办法在SequenceFile.MetaData写入后向SequenceFile.MetaData添加条目?因为这样您就可以添加写入元数据的条目数量。因此,当您有SequenceFile的索引和indexinterval时,您可以估计最大键数量是
indexinterval*indexEntries
。但这不能通过MapFile.Reader API访问。也提供finalKey方法,但我不确定这是索引中的最后一个键还是整个集合的最后一个键。因此,当您有SequenceFile的索引和indexinterval时,您可以估计最大键数是
indexinterval*indexEntries
。但这不能通过MapFile.Reader API访问。还提供了finalKey方法,不过我不确定这是索引中的最后一个键还是整个集合的最后一个键。