Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

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


Copy link to this message
-
Re: Is "synchronized" required?
What exceptions do you actually receive - can you send them here?
Knowing that is key to addressing your issue.

On Tue, Feb 5, 2013 at 1:50 AM, Bing Li <[EMAIL PROTECTED]> wrote:
> 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();
>      }
> }

--
Harsh J