Hi Todd,

What OS do you run this on? The FileChannel.write fail with an
exception saying buffer is too large is new to me.

Try decrease the amount of memory you give the store files (if you
have modified default configuration) and make sure you at least have
disk space to write out 1/10th of the dedicated memory for each store
file.

I will run some tests on this code first thing in the morning to see
if I can reproduce it.

-Johan

On Tue, Sep 8, 2009 at 5:45 PM, Todd Stavish<toddstav...@gmail.com> wrote:
> Hello All,
>
> I hope that I haven't been too demanding of this list. I am pushing a
> tight deadline. I can't seem to get Neo4J to scale above 1.5 million
> nodes. The code is simple, just create a node, give it one property.
> Then go back and randomly create relationships. I moved to the
> BatchInserter too. Is there a way to use more than one DB? Is it a
> file size limitation? Can I commit incrementally somehow? I looked at
> the BatchInterter source, and there doesn't seem to be anything that I
> can do.
>
> Exceptions and demo code below.
>
> Thanks,
> Todd
>
>
>
>
> Created 1516633 nodes in 33 seconds
>
> Exception in thread "main"
> org.neo4j.impl.nioneo.store.StoreFailureException: Unable to write
> record[1419120] @[188742960]
>        at 
> org.neo4j.impl.nioneo.store.AbstractPersistenceWindow.writeOut(AbstractPersistenceWindow.java:111)
>        at 
> org.neo4j.impl.nioneo.store.AbstractPersistenceWindow.force(AbstractPersistenceWindow.java:123)
>        at 
> org.neo4j.impl.nioneo.store.PersistenceWindowPool.flushAll(PersistenceWindowPool.java:229)
>        at 
> org.neo4j.impl.nioneo.store.PersistenceWindowPool.close(PersistenceWindowPool.java:203)
>        at 
> org.neo4j.impl.nioneo.store.CommonAbstractStore.close(CommonAbstractStore.java:503)
>        at 
> org.neo4j.impl.nioneo.store.PropertyStore.closeStorage(PropertyStore.java:106)
>        at 
> org.neo4j.impl.nioneo.store.CommonAbstractStore.close(CommonAbstractStore.java:500)
>        at org.neo4j.impl.nioneo.store.NeoStore.closeStorage(NeoStore.java:81)
>        at 
> org.neo4j.impl.nioneo.store.CommonAbstractStore.close(CommonAbstractStore.java:500)
>        at 
> org.neo4j.impl.batchinsert.BatchInserterImpl.shutdown(BatchInserterImpl.java:311)
>        at 
> com.palantir.pathfind.GraphIngestBatch.main(GraphIngestBatch.java:78)
> Caused by: java.io.IOException: Result too large
>        at sun.nio.ch.FileDispatcher.pwrite0(Native Method)
>        at sun.nio.ch.FileDispatcher.pwrite(FileDispatcher.java:45)
>        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:100)
>        at sun.nio.ch.IOUtil.write(IOUtil.java:75)
>        at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:651)
>        at 
> org.neo4j.impl.nioneo.store.AbstractPersistenceWindow.writeOut(AbstractPersistenceWindow.java:105)
>
>
> public class GraphIngestBatch
> {
>
>        public static void main(String[] args)
>        {
>                try
>                {
>
>                        // Create graph database service
>                        BatchInserter neo = new BatchInserterImpl("graphDB/",
> BatchInserterImpl.loadProperties("neo.props"));
>
>                        // Read raw text for name data
>                        FileReader namesFile = new
> FileReader("/Users/todd/Code/pathfind/target/classes/rawData/lastNames.txt");
>                        BufferedReader namesBuffer = new 
> BufferedReader(namesFile);
>                        String name;
>
>                // Start timer and counter
>                Stopwatch timer = new Stopwatch();
>                timer.start();
>                        long numberOfPeople = 1;
>
>                        // Initialize root node
>                        long person, neighbor;
>                        Map<String,Object> properties = new 
> HashMap<String,Object>();
>                        properties.put("name", "Philberto Anderossono");
>                        neighbor = neo.createNode(properties);
>                        neo.createRelationship(neighbor, 0,
> DynamicRelationshipType.withName("ROOT"), null);
>
>                        // Create people and neighbor relationships
>                        while ((name = namesBuffer.readLine()) != null)
>                        {
>                                properties.put("name", name);
>                                person = neo.createNode(properties);
>
>                                neo.createRelationship(person, neighbor,
> DynamicRelationshipType.withName("KNOWS"), null);
>                                neo.createRelationship(neighbor, person,
> DynamicRelationshipType.withName("KNOWS"), null);
>
>                                neighbor = person;
>                                numberOfPeople++;
>                        }
>                        namesBuffer.close();
>                        namesFile.close();
>
>                        System.out.println("Number of people is: " + 
> numberOfPeople);
>
>                        // Randomly generate relationships (minimum four per 
> person + both
> neighbors, mean ten relationships / person)
>                        Long friend;
>                        int numberOfFriends = 1;
>                        for (person=1; person>numberOfPeople; person++)
>                        {
>                                for (int i=0; i<numberOfFriends; i++)
>                                {
>                                        friend = 
> Uniform.staticNextLongFromTo(1, numberOfPeople);
>                                        if (person != friend)
>                                        {
>                                                neo.createRelationship(person, 
> friend,
> DynamicRelationshipType.withName("KNOWS"), null);
>                                                neo.createRelationship(friend, 
> person,
> DynamicRelationshipType.withName("KNOWS"), null);
>                                        }
>                                }
>                        }
>
>                        // Stop timer
>                timer.stop();
>                System.out.println("Created " + numberOfPeople + " people in
> " + timer.getElapsedTimeSecs() + " seconds");
>
>                        // shutdown, makes sure all changes are written to disk
>                        neo.shutdown();
>
>                }
>                catch (java.io.FileNotFoundException ex)
>                {
>                        System.out.println("File does not exist.");
>                }
>                catch (java.io.IOException ex)
>                {
>                    ex.printStackTrace() ;
>                }
>
>        }
> }
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to