You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by gs...@apache.org on 2009/06/24 15:58:20 UTC
svn commit: r788024 - in /lucene/mahout/trunk/utils/src:
main/java/org/apache/mahout/utils/vectors/
test/java/org/apache/mahout/utils/vectors/
Author: gsingers
Date: Wed Jun 24 13:58:20 2009
New Revision: 788024
URL: http://svn.apache.org/viewvc?rev=788024&view=rev
Log:
VectorIterable from a SequenceFile
Added:
lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterable.java
lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterableTest.java
Modified:
lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/Driver.java
Modified: lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/Driver.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/Driver.java?rev=788024&r1=788023&r2=788024&view=diff
==============================================================================
--- lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/Driver.java (original)
+++ lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/Driver.java Wed Jun 24 13:58:20 2009
@@ -187,8 +187,9 @@
vectorWriter = getSeqFileWriter(outFile);
}
- vectorWriter.write(iteratable, maxDocs);
+ long numDocs = vectorWriter.write(iteratable, maxDocs);
vectorWriter.close();
+ log.info("Wrote: " + numDocs + " vectors");
String delimiter = cmdLine.hasOption(delimiterOpt) ? cmdLine.getValue(delimiterOpt).toString() : "\t";
File dictOutFile = new File(cmdLine.getValue(dictOutOpt).toString());
Added: lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterable.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterable.java?rev=788024&view=auto
==============================================================================
--- lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterable.java (added)
+++ lucene/mahout/trunk/utils/src/main/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterable.java Wed Jun 24 13:58:20 2009
@@ -0,0 +1,62 @@
+package org.apache.mahout.utils.vectors;
+
+import org.apache.hadoop.io.SequenceFile;
+import org.apache.hadoop.io.Writable;
+import org.apache.mahout.matrix.Vector;
+
+import java.util.Iterator;
+import java.io.IOException;
+
+
+/**
+ *
+ *
+ **/
+public class SequenceFileVectorIterable implements VectorIterable {
+ private SequenceFile.Reader reader;
+
+ public SequenceFileVectorIterable(SequenceFile.Reader reader) {
+ this.reader = reader;
+ }
+
+
+ @Override
+ public Iterator<Vector> iterator() {
+ try {
+ return new SeqFileIterator();
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ } catch (InstantiationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private class SeqFileIterator implements Iterator<Vector> {
+ private Writable key;
+ private Vector value;
+
+ private SeqFileIterator() throws IllegalAccessException, InstantiationException {
+ value = (Vector) reader.getValueClass().newInstance();
+ key = (Writable) reader.getKeyClass().newInstance();
+ }
+
+ @Override
+ public boolean hasNext() {
+ try {
+ return reader.next(key, value);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public Vector next() {
+ return value;
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
+}
Added: lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterableTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterableTest.java?rev=788024&view=auto
==============================================================================
--- lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterableTest.java (added)
+++ lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/SequenceFileVectorIterableTest.java Wed Jun 24 13:58:20 2009
@@ -0,0 +1,47 @@
+package org.apache.mahout.utils.vectors;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.io.SequenceFile;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.mahout.matrix.SparseVector;
+import org.apache.mahout.matrix.Vector;
+import org.apache.mahout.utils.vectors.io.SequenceFileVectorWriter;
+
+
+/**
+ *
+ *
+ **/
+public class SequenceFileVectorIterableTest extends TestCase {
+ public void testIterable() throws Exception {
+ File tmpDir = new File(System.getProperty("java.io.tmpdir"));
+ File tmpLoc = new File(tmpDir, "sfvit");
+ tmpLoc.mkdirs();
+ File tmpFile = File.createTempFile("sfvit", ".dat", tmpLoc);
+
+ Path path = new Path(tmpFile.getAbsolutePath());
+ Configuration conf = new Configuration();
+ FileSystem fs = FileSystem.get(conf);
+ SequenceFile.Writer seqWriter = new SequenceFile.Writer(fs, conf, path, LongWritable.class, SparseVector.class);
+ SequenceFileVectorWriter writer = new SequenceFileVectorWriter(seqWriter);
+ RandomVectorIterable iter = new RandomVectorIterable(50);
+ writer.write(iter);
+ writer.close();
+
+ SequenceFile.Reader seqReader = new SequenceFile.Reader(fs, path, conf);
+ SequenceFileVectorIterable sfvi = new SequenceFileVectorIterable(seqReader);
+ int count = 0;
+ for (Vector vector : sfvi) {
+ System.out.println("Vec: " + vector.asFormatString());
+ count++;
+ }
+ seqReader.close();
+ assertTrue(count + " does not equal: " + 50, count == 50);
+ }
+}