zoukankan      html  css  js  c++  java
  • Cassandra Java 使用TimeUUIDType

    参考地址 http://wiki.apache.org/cassandra/FAQ#working_with_timeuuid_in_java

    下载一个包 http://johannburkard.de/software/uuid/

    代码示例:

    代码
    import java.util.List;

    import org.apache.thrift.transport.TTransport;
    import org.apache.thrift.transport.TSocket;
    import org.apache.thrift.protocol.TProtocol;
    import org.apache.thrift.protocol.TBinaryProtocol;
    import org.apache.thrift.TException;
    import org.apache.cassandra.thrift.Cassandra;
    import org.apache.cassandra.thrift.Column;
    import org.apache.cassandra.thrift.ColumnOrSuperColumn;
    import org.apache.cassandra.thrift.ColumnParent;
    import org.apache.cassandra.thrift.ColumnPath;
    import org.apache.cassandra.thrift.ConsistencyLevel;
    import org.apache.cassandra.thrift.InvalidRequestException;
    import org.apache.cassandra.thrift.SlicePredicate;
    import org.apache.cassandra.thrift.SliceRange;
    import org.apache.cassandra.thrift.TimedOutException;
    import org.apache.cassandra.thrift.UnavailableException;

    public class test {
        
    public static void main(String[] args) throws Exception, InvalidRequestException, UnavailableException, TimedOutException, TException {        
            
    byte[] uuid = asByteArray(getTimeUUID());
            TTransport tr 
    = new TSocket("localhost"9160);
            TProtocol proto 
    = new TBinaryProtocol(tr);
            Cassandra.Client client 
    = new Cassandra.Client(proto);
            tr.open();
            String key_user_id 
    = "123";
            
    long timestamp = System.currentTimeMillis();
            ColumnPath cp 
    =new ColumnPath();
            cp.setColumn(uuid);
            cp.setColumn_family(
    "StandardByUUID1");
            client.insert(
    "Keyspace1",
                          key_user_id,
                          cp,
                          
    "Some thing here".getBytes("UTF-8"),
                          timestamp,
                          ConsistencyLevel.ONE);
            
            SliceRange sr 
    = new SliceRange(new byte[0], new byte[0], false10);
            SlicePredicate predicate 
    = new SlicePredicate();
            predicate.setSlice_range(sr);
            ColumnParent parent 
    = new ColumnParent();
            parent.setColumn_family(
    "StandardByUUID1");        
            List
    <ColumnOrSuperColumn> results = client.get_slice("Keyspace1", key_user_id, parent, predicate, ConsistencyLevel.ONE);
            
    for (ColumnOrSuperColumn result : results)
            {
                Column column 
    = result.column;
                System.
    out.println(toUUID(column.name).toString() + " -> " + new String(column.value, "UTF-8"));
            }

            tr.close();
            System.
    out.println("done.");
        }
        
    public static java.util.UUID getTimeUUID()
        {
            
    return java.util.UUID.fromString(new com.eaio.uuid.UUID().toString());
        }
        
        
    public static byte[] asByteArray(java.util.UUID uuid)
        {
            
    long msb = uuid.getMostSignificantBits();
            
    long lsb = uuid.getLeastSignificantBits();
            
    byte[] buffer = new byte[16];

            
    for (int i = 0; i < 8; i++) {
                    buffer[i] 
    = (byte) (msb >>> 8 * (7 - i));
            }
            
    for (int i = 8; i < 16; i++) {
                    buffer[i] 
    = (byte) (lsb >>> 8 * (7 - i));
            }

            
    return buffer;
        }

        
    public static java.util.UUID toUUID( byte[] uuid )
        {
            
    long msb = 0;
            
    long lsb = 0;
            assert uuid.length 
    == 16;
            
    for (int i=0; i<8; i++)
                msb 
    = (msb << 8| (uuid[i] & 0xff);
            
    for (int i=8; i<16; i++)
                lsb 
    = (lsb << 8| (uuid[i] & 0xff);
            
    long mostSigBits = msb;
            
    long leastSigBits = lsb;
        
            com.eaio.uuid.UUID u 
    = new com.eaio.uuid.UUID(msb,lsb);
            
    return java.util.UUID.fromString(u.toString());
        }
    }

     使用cassandra-cli查询结果:


    输出结果:

    9a3212f0-7584-11df-9632-001fe210d7db -> Chris Goffinet

    fa6685c0-7584-11df-8856-001fe210d7db -> Some thing here 

    done. 

  • 相关阅读:
    centos7无法上网问题
    git 笔记记录
    高级 JsRender 模板功能
    Xamarin 示例Standard Controls报错:xamarin Failed to compile interface file. See Build Output for details
    Xamarin学习资源收集
    Bootstrap学习笔记1
    动态样式语言Less学习笔记
    html5的发展历程和由此引起的政治斗争
    网页引用本地电脑的字体 css设置浏览器会不显示的解决办法
    css引入方式优先级以及不同选择器的优先级区别
  • 原文地址:https://www.cnblogs.com/mobile/p/1756216.html
Copyright © 2011-2022 走看看