<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

    We recently set up HBase and HBase-trx (from https://github.com/hbase-trx) to use multiple-column indexes with this code.  After you compile it, just copy the jar and the hbase-trx jar into your hbase’s lib folder and you should be good to to!

    When you create a composite index, you can see the metadata for the index by looking at the table description.  One of the properties will read “INDEXES =>” followed by index names and ‘family:qualifier’ style column names in the index.

    KeyGeneratorFactory:

    package com.ir.store.hbase.indexes;

    import java.util.List;

    import org.apache.hadoop.hbase.client.tableindexed.IndexKeyGenerator;

    public class KeyGeneratorFactory {

    public static IndexKeyGenerator getInstance(List columns) {
    return new HBaseIndexKeyGenerator(columns);
    }
    }

    HBaseIndexKeyGenerator:

    package com.ir.store.hbase.indexes;

    import java.io.DataInput;
    import java.io.DataOutput;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import org.apache.hadoop.hbase.client.tableindexed.IndexKeyGenerator;
    import org.apache.hadoop.hbase.util.Bytes;

    public class HBaseIndexKeyGenerator extends Object implements IndexKeyGenerator {
    public static byte[] KEYSEPERATOR = "~;?".getBytes();

    private int columnCount;
    private List columnNames = new ArrayList();

    public HBaseIndexKeyGenerator(List memberColumns) {
    // For new key generators
    columnNames = memberColumns;
    columnCount = memberColumns.size();
    }

    public HBaseIndexKeyGenerator() {
    // Hollow constructor for deserializing -- should call readFields shortly
    columnCount = 0;
    }

    public void readFields(DataInput binaryInput) throws IOException {
    columnCount = binaryInput.readInt();
    for (int currentColumn = 0; currentColumn < columnCount; currentColumn++)
    columnNames.add(Bytes.readByteArray(binaryInput));
    }

    public void write(DataOutput binaryOutput) throws IOException {
    binaryOutput.writeInt(columnCount);
    for (byte[] columnName : columnNames)
    Bytes.writeByteArray(binaryOutput, columnName);
    }

    public byte[] createIndexKey(byte[] baseRowIdentifier, Map baseRowData) {
    byte[] indexRowIdentifier = null;
    for (byte[] columnName: columnNames) {
    if (indexRowIdentifier == null)
    indexRowIdentifier = baseRowData.get(columnName);
    else indexRowIdentifier = Bytes.add(indexRowIdentifier, HBaseIndexKeyGenerator.KEYSEPERATOR, baseRowData.get(columnName));
    }
    if (baseRowIdentifier != null)
    return Bytes.add(indexRowIdentifier, HBaseIndexKeyGenerator.KEYSEPERATOR, baseRowIdentifier);
    return indexRowIdentifier;
    }
    }
    posted on 2011-06-11 16:21 ivaneeo 閱讀(411) 評論(0)  編輯  收藏 所屬分類:
    主站蜘蛛池模板: 日本高清不卡中文字幕免费| 香蕉视频在线观看亚洲| 亚洲大码熟女在线观看| 国产成人免费午夜在线观看| 精品无码一区二区三区亚洲桃色| 性色午夜视频免费男人的天堂| 三上悠亚亚洲一区高清| 国产午夜无码精品免费看动漫| 亚洲国产精品一区二区成人片国内| 国产性生大片免费观看性| 亚洲国产成人一区二区三区| 嫩草影院在线播放www免费观看| 亚洲小视频在线观看| 1区2区3区产品乱码免费| 亚洲国产成人精品久久| 67194成是人免费无码| 国产亚洲男人的天堂在线观看| 免费大香伊蕉在人线国产 | 亚洲一区在线免费观看| 无码人妻久久一区二区三区免费丨| 亚洲国产日韩综合久久精品| 又粗又大又猛又爽免费视频| CAOPORN国产精品免费视频| 亚洲第一视频网站| a级毛片无码免费真人| 国产精品成人免费观看| 亚洲综合婷婷久久| 永久免费毛片手机版在线看| 国产精品玖玖美女张开腿让男人桶爽免费看 | 国产精品亚洲一区二区三区| 久久久久亚洲AV成人网人人网站 | 免费看的一级毛片| 黄色网址免费在线观看| 亚洲熟妇色自偷自拍另类| 国产三级电影免费观看| 精品视频一区二区三区免费| 亚洲女女女同性video| 亚洲精品无码成人AAA片| 国产精品久久久久久久久久免费| 人成电影网在线观看免费| 亚洲婷婷在线视频|