Return-Path: X-Original-To: apmail-hbase-user-archive@www.apache.org Delivered-To: apmail-hbase-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DB1DA175B7 for ; Wed, 23 Sep 2015 18:41:38 +0000 (UTC) Received: (qmail 25048 invoked by uid 500); 23 Sep 2015 18:41:34 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 24970 invoked by uid 500); 23 Sep 2015 18:41:34 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 24944 invoked by uid 99); 23 Sep 2015 18:41:33 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 Sep 2015 18:41:33 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 812E5F7599 for ; Wed, 23 Sep 2015 18:41:33 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3.001 X-Spam-Level: *** X-Spam-Status: No, score=3.001 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=3, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id j48GhqsisWcC for ; Wed, 23 Sep 2015 18:41:18 +0000 (UTC) Received: from mail-io0-f174.google.com (mail-io0-f174.google.com [209.85.223.174]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 0EA01237B8 for ; Wed, 23 Sep 2015 18:41:17 +0000 (UTC) Received: by ioii196 with SMTP id i196so52632212ioi.3 for ; Wed, 23 Sep 2015 11:41:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-type; bh=vMswk5iS8t/9hbS7+Dcdprr3JzI/LsFkiqr/AdsC1J0=; b=ehHNCI6BwTUDnu2/VYNKz9LpnXH65Z0+x4PYs0RUef+NLRkEHO72L8MaJvEyM2KKg5 nBy26vtQG97FnXMDSchXQE8BPvKaxpHJ4VOkNw2UrI3NYLgCn/vUyCF7r6Wx+alYzjCV bF05X0syZJAFfdmMp36bGJioROMthbsonr53OWmov3hBBRBLSy2w5rxGSvo53goZdMD9 uCODEwFSeL6tFd8F2yYPGbt0QY95sNsMQrnDuaP0lWwlU4ZlrKdVfW+PE0HMx1okZj0C livwOU+lfBljbR6cskUmVRsecQRvGhYrTE8xW22+v+PbgkCaVpaCwBGhwF2jbUNAR/Tn OBJg== X-Gm-Message-State: ALoCoQnrDzGvPACQC3L9zZ5KD6QJN0b1A2tk4Ch0fvk5ULw4IT3bBO34LvC/m2urNngKzQsdy3Ar X-Received: by 10.107.9.194 with SMTP id 63mr47124008ioj.122.1443033677065; Wed, 23 Sep 2015 11:41:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.64.133.68 with HTTP; Wed, 23 Sep 2015 11:40:37 -0700 (PDT) In-Reply-To: References: From: Gaurav Agarwal Date: Thu, 24 Sep 2015 00:10:37 +0530 Message-ID: Subject: Re: Large number of column qualifiers To: Hbase Users Content-Type: multipart/alternative; boundary=001a113ebb32b88c7105206e758b --001a113ebb32b88c7105206e758b Content-Type: text/plain; charset=UTF-8 Thanks Vlad. Could you please point me the KV size setting (default 1MB)? Just to make sure that I understand correct - the following comment is incorrect in Cell.java: /** * Contiguous raw bytes that may start at any index in the containing array. Max length is * Short.MAX_VALUE which is 32,767 bytes. * @return The array containing the qualifier bytes. */ byte[] getQualifierArray(); On Wed, Sep 23, 2015 at 11:43 PM, Vladimir Rodionov wrote: > Check KeyValue class (Cell's implementation). getQualifierArray() returns > kv's backing array. There is no SHORT limit on a size of this array, but > there are other limits in HBase - maximum KV size, for example, which is > configurable, but, by default, is 1MB. Having 50K qualifiers is a bad idea. > Consider redesigning your data model and use rowkey instead. > > -Vlad > > On Wed, Sep 23, 2015 at 10:24 AM, Ted Yu wrote: > > > Please take a look at HBASE-11544 which is in hbase 1.1 > > > > Cheers > > > > On Wed, Sep 23, 2015 at 10:18 AM, Gaurav Agarwal > wrote: > > > > > Hi All, > > > > > > I have Column Family with very large number of column qualifiers (> > > > 50,000). Each column qualifier is 8 bytes long. The problem is the > when I > > > do a scan operation to fetch some rows, the client side Cell object > does > > > not have enough space allocated in it to hold all the columnQaulifiers > > for > > > a given row and hence I cannot read all the columns back for a given > row. > > > > > > Please see the code snippet that I am using: > > > > > > final ResultScanner rs = htable.getScanner(scan); > > > for (Result row = rs.next(); row != null; row = rs.next()) { > > > final Cell[] cells = row.rawCells(); > > > if (cells != null) { > > > for (final Cell cell : cells) { > > > final long c = Bytes.toLong( > > > *cell.getQualifierArray()*, > > cell.getQualifierOffset(), > > > cell.getQualifierLength()); > > > final long v = Bytes.toLong(cell.getValueArray(), > > > cell.getValueOffset()); > > > points.put(c, v); > > > } > > > } > > > } > > > > > > The cell.getQualifierArray() method says that it's 'Max length is > > > Short.MAX_VALUE which is 32,767 bytes.'. Hence it can only hold around > > > 4,000 columnQualfiers. > > > > > > Is there an alternate API that I should be using or am I missing some > > > setting here? Note that in worst case I need to read all the > > > columnQualifiers in a row and I may or may not know a subset to fetch > in > > > advance. > > > > > > Even if this is not possible in a single call, is there a way to cursor > > > through the columnQualifiers? > > > > > > I am presently using Hbase 0.96 client but can switch to Hbase 1.x if > > there > > > is an API in the newer version. > > > > > > --cheers, gaurav > > > > > > -- > > > --cheers, gaurav > > > > > > -- --cheers, gaurav --001a113ebb32b88c7105206e758b--