Ted: Awesome. I can think of several use cases where this is useful, but im pretty stuck on 0.92 right now.
I tried the null-version trick but must be doing something wrong. How do I set version to null on a column? Isnt version equal to the timestamp (primitive long)? Setting timestamp to 0 and -1 doesnt work it seems. HTable t = new HTable(tablename); Put p = new Put(r1); KeyValue kv1 = new KeyValue(r1, c1, c1, new byte[]{1}); KeyValue kv2 = new KeyValue(r1, c2, c2, new byte[]{1}); p.add(kv1); p.add(kv2); t.put(p); t.flushCommits(); Result res = t.get(new Get(r1)); byte[] v1 = res.getValue(c1, c1); byte[] v2 = res.getValue(c2, c2); System.out.println("v1 " + v1[0] + " v2 " + v2[0]); kv1 = new KeyValue(r1, c1, c1, -1, new byte[]{1}); p = new Put(r1); p.add(kv1); t.put(p); res = t.get(new Get(r1)); v1 = res.getValue(c1, c1); v2 = res.getValue(c2, c2); System.out.println("v1 " + v1[0] + " v2 " + v2[0]); This prints: v1 1 v2 1 v1 1 v2 1 Any advice? On Tue, May 22, 2012 at 10:45 PM, Ted Yu <yuzhih...@gmail.com> wrote: > That's right. > > In HBase 0.94 and trunk, check out the following API in HRegion: > public void mutateRowsWithLocks(Collection<Mutation> mutations, > Collection<byte[]> rowsToLock) throws IOException { > > It allows you to combine Put's and Delete's for a single region, > atomically. > > On Tue, May 22, 2012 at 1:22 PM, Kristoffer Sjögren <sto...@gmail.com > >wrote: > > > Thanks, sounds like that should do it. > > > > So im guessing it is correct to assume that _all_ KeyValues added to a > > _single_ Put operation will either wholely succeed or wholely fail as > long > > as they belong to the same row? > > > > On Tue, May 22, 2012 at 8:30 PM, Tom Brown <tombrow...@gmail.com> wrote: > > > > > I don't think you can include a delete with a put and keep it atomic. > > > You could include a null version of the column with your put, though, > > > for a similar effect. > > > > > > --Tom > > > > > > On Tue, May 22, 2012 at 10:55 AM, Kristoffer Sjögren <sto...@gmail.com > > > > > wrote: > > > > Hi > > > > > > > > I'm trying to use Put operations to replace ("set") already existing > > rows > > > > by nullify certain columns and qualifiers as part of an Put > operation. > > > > > > > > The reason I want to do this is 1) keep the operation > atomic/consistent > > > 2) > > > > avoid latency from first doing Delete then Put. > > > > > > > > Is there some way to do this kind of operation? > > > > > > > > Cheers, > > > > -Kristoffer > > > > > >