Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase >> mail # user >> Is "synchronized" required?


Copy link to this message
-
Is "synchronized" required?
Dear all,

When writing data into HBase, sometimes I got exceptions. I guess they
might be caused by concurrent writings. But I am not sure.

My question is whether it is necessary to put "synchronized" before
the writing methods? The following lines are the sample code.

I think the directive, synchronized, must lower the performance of
writing. Sometimes concurrent writing is needed in my system.

Thanks so much!

Best wishes,
Bing

public synchronized void AddDomainNodeRanks(String domainKey, int
timingScale, Map<String, Double> nodeRankMap)
{
      List<Put> puts = new ArrayList<Put>();
      Put domainKeyPut;
      Put timingScalePut;
      Put nodeKeyPut;
      Put rankPut;

      byte[] domainNodeRankRowKey;

      for (Map.Entry<String, Double> nodeRankEntry : nodeRankMap.entrySet())
      {
          domainNodeRankRowKey Bytes.toBytes(RankStructure.DOMAIN_NODE_RANK_ROW +
Tools.GetAHash(domainKey + timingScale + nodeRankEntry.getKey()));

         domainKeyPut = new Put(domainNodeRankRowKey);
         domainKeyPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
RankStructure.DOMAIN_NODE_RANK_DOMAIN_KEY_COLUMN,
Bytes.toBytes(domainKey));
         puts.add(domainKeyPut);

         timingScalePut = new Put(domainNodeRankRowKey);
         timingScalePut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
RankStructure.DOMAIN_NODE_RANK_TIMING_SCALE_COLUMN,
Bytes.toBytes(timingScale));
        puts.add(timingScalePut);

        nodeKeyPut = new Put(domainNodeRankRowKey);
        nodeKeyPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
RankStructure.DOMAIN_NODE_RANK_NODE_KEY_COLUMN,
Bytes.toBytes(nodeRankEntry.getKey()));
        puts.add(nodeKeyPut);

        rankPut = new Put(domainNodeRankRowKey);
        rankPut.add(RankStructure.DOMAIN_NODE_RANK_FAMILY,
RankStructure.DOMAIN_NODE_RANK_RANKS_COLUMN,
Bytes.toBytes(nodeRankEntry.getValue()));
        puts.add(rankPut);
     }

     try
     {
         this.rankTable.put(puts);
     }
     catch (IOException e)
     {
         e.printStackTrace();
     }
}
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB