Alright thank you all

On Fri, Jun 17, 2011 at 2:46 PM, Michael Hunger <
[email protected]> wrote:

> No that would even be worse.
>
> A single BatchInserter  and every graphdb-store that is currently written
> to by a batch inserter MUST be accessed from only a single single threaded
> environment.
>
> Please use the normal EmbeddedGraphDbService for your multi-threaded MR
> jobs.
>
> Cheers
>
> Michael
>
> Am 17.06.2011 um 23:38 schrieb sulabh choudhury:
>
> Are you referring that in a M/R environment each Map (or Reduce) process
> will try to have its own instance of batchInserter and hence it would fail ?
>
> WHen I say "local" I mean that the code works fine when I just use the M/R
> api but fails when I try to run in distributed mode.
>
> On Fri, Jun 17, 2011 at 2:25 PM, Michael Hunger <
> [email protected]> wrote:
>
>> Hi Sulabh,
>>
>> what do you mean by 'local' mode?
>>
>> The batch inserter can only be used in a single threaded environment. You
>> shouldn't use it in a concurrent env as it will fail unpredictably.
>>
>> Please use the EmbeddedGraphDatabase instead.
>>
>> Michael
>>
>> Am 17.06.2011 um 23:20 schrieb sulabh choudhury:
>>
>> Well as I mentioned the code does not fail anywhere, it runs it full
>> course and just skips the  writing to the graph part.
>> I have just one graph and I pass just 1 instance of the batchInserter  to
>> the map function.
>>
>> My code is in Scala, sample code attached below
>>
>>
>> class ExportReducer extends Reducer[Text,MapWritable,LongWritable,Text]{
>>
>>   type Context = org.apache.hadoop.mapreduce.Reducer[Text, MapWritable,
>> LongWritable, Text]#Context
>>
>>   @throws(classOf[Exception])
>>   override def reduce(key: Text, value: java.lang.Iterable[MapWritable],
>> context: Context) {
>>
>>       var keys: Array[String] = key.toString.split(":")
>>   var uri1 = "first" + keys(0)
>>   var uri2 = "last" + keys(1)
>>       ExportReducerObject.propertiesUID.put("ID",uri1);
>>     var node1 =
>> ExportReducerObject.batchInserter.createNode(ExportReducerObject.propertiesUID);
>>
>> ExportReducerObject.indexService.add(node1,ExportReducerObject.propertiesUID)
>>       ExportReducerObject.propertiesCID.put("ID",uri2);
>>  var node2 =
>> ExportReducerObject.batchInserter.createNode(ExportReducerObject.propertiesCID);
>>
>> ExportReducerObject.indexService.add(node2,ExportReducerObject.propertiesCID);
>>
>>       ExportReducerObject.propertiesEdges.put("fullName","1.0");
>>
>> ExportReducerObject.batchInserter.createRelationship(node1,node2,DynamicRelationshipType.withName("fullName"),ExportReducerObject.propertiesEdges)
>>
>>   }
>>
>> My graph properties are defined as below :-
>> val batchInserter = new BatchInserterImpl("graph",
>> BatchInserterImpl.loadProperties("neo4j.props"))
>> val indexProvider = new LuceneBatchInserterIndexProvider(batchInserter)
>> val indexService =
>> indexProvider.nodeIndex("ID",MapUtil.stringMap("type","exact"))
>>
>>
>> Mind it that the code works perfectly( writes to the graph) when running
>> in local mode.
>>
>> On Fri, Jun 17, 2011 at 11:32 AM, sulabh choudhury <[email protected]>wrote:
>>
>>> I am trying to write MapReduce job to do Neo4j Batchinserters.
>>> It works fine when I just run it like a java file(runs in local mode) and
>>> does the insert, but when I try to run it in the distributed mode it does
>>> not write to the graph.
>>> Is it issue related to permissions?
>>> I have no clue where to look.
>>>
>>
>>
>>
>> --
>> --
>> Thanks and Regards,
>> Sulabh Choudhury
>>
>>
>>
>
>
> --
> --
> Thanks and Regards,
> Sulabh Choudhury
>
>
>


-- 

-- 
Thanks and Regards,
Sulabh Choudhury
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to