On Wed, Jun 27, 2012 at 3:05 PM, Amitanand Aiyer wrote:
There was some difference in the way locks are taken for batched deletes
and puts. This was fixed for 89.
I wonder if the same could be the issue here.
Sent from my iPhone
tombstone. And I'm deleting the entire row.
than while I'm scanning) it takes about the same amount of time. I am
deleting the entire row so I wouldn't think it would be doing a read before
the delete (
http://mail-archives.apache.org/mod_mbox/hbase-user/201206.mbox/%3CE83D30E8F408F94A96F992785FC29D82063395D6@s2k3mntaexc1.mentacapital.local%3E
).
There was some difference in the way locks are taken for batched deletes
and puts. This was fixed for 89.
I wonder if the same could be the issue here.
Sent from my iPhone
On Jun 27, 2012, at 2:04 PM, "Jeff Whiting" wrote:
I'm struggling to understand why my deletes are taking longer than my
inserts. My understanding is that a delete is just an insertion of aI'm struggling to understand why my deletes are taking longer than my
tombstone. And I'm deleting the entire row.
I do a simple loop (pseudo code) and insert the 100 byte rows:
for (int i=0; i < 50000; i++)
{
puts.append(new Put(rowkey[i], oneHundredBytes[i]));
if (puts.size() % 1000 == 0)
{
Benchmark.start();
table.batch(puts);
Benchmark.stop();
}
}
The above takes about 8282ms total.
However the delete takes more than twice as long:
Iterator it = table.getScannerScan(rowkey[0],
rowkey[50000-1]).iterator();
while(it.hasNext())
{
r = it.next();
deletes.append(new Delete(r.getRow()));
if (deletes.size() % 1000 == 0)
{
Benchmark.start();
table.batch(deletes);
Benchmark.stop();
}
}
The above takes 17369ms total.
I'm only benchmarking the deletion time and not the scan time.
Additionally if I batch the deletes into one big one at the end (ratherfor (int i=0; i < 50000; i++)
{
puts.append(new Put(rowkey[i], oneHundredBytes[i]));
if (puts.size() % 1000 == 0)
{
Benchmark.start();
table.batch(puts);
Benchmark.stop();
}
}
The above takes about 8282ms total.
However the delete takes more than twice as long:
Iterator it = table.getScannerScan(rowkey[0],
rowkey[50000-1]).iterator();
while(it.hasNext())
{
r = it.next();
deletes.append(new Delete(r.getRow()));
if (deletes.size() % 1000 == 0)
{
Benchmark.start();
table.batch(deletes);
Benchmark.stop();
}
}
The above takes 17369ms total.
I'm only benchmarking the deletion time and not the scan time.
than while I'm scanning) it takes about the same amount of time. I am
deleting the entire row so I wouldn't think it would be doing a read before
the delete (
http://mail-archives.apache.org/mod_mbox/hbase-user/201206.mbox/%3CE83D30E8F408F94A96F992785FC29D82063395D6@s2k3mntaexc1.mentacapital.local%3E
).
Any thoughts on why it is slower and how I can speed it up?
Thanks,
~Jeff
--
Jeff Whiting
Qualtrics Senior Software Engineer
jeffw@qualtrics.com
Thanks,
~Jeff
--
Jeff Whiting
Qualtrics Senior Software Engineer
jeffw@qualtrics.com