HBase读写实例

1.基于python,需要thrift

2.将不同的手机号段的MD5值存入hbase,提供md5彩虹板

3.查询速度检测

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import hashlib,time
from thrift.transport.TSocket import TSocket
from thrift.transport.TTransport import TBufferedTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
import threading
from hbase.ttypes import *

def get_token(phone_number):
    md5str = hashlib.md5(phone_number).hexdigest()
    #print md5str,len(md5str)
    return md5str
def putHbaseData(tableName):
    print "putHbaseData---tableName:",tableName
    host = 'localhost'
    port = 9090
    cf = "cf"
    phone_col = "phoneNumber"
    transport = TBufferedTransport(TSocket(host, port))
    transport.open()
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Hbase.Client(protocol)
    nameLists = client.getTableNames()
    if tableName not in nameLists:
        print "create table:",tableName
        contents = ColumnDescriptor(name=cf + ":", maxVersions=1)
        client.createTable(tableName, [contents])
    else:
        print "nametable already exists:",tableName

    minNumInt = int(tableName + "00000000")
    maxNumInt = int(str(int(tableName) + 1) + "00000000")
    #maxNumInt = int(str(int(tableName) ) + "00000010")

    #print "put data to table:", tableName
    while minNumInt < maxNumInt:
        md5Str = get_token(str(minNumInt))
        mutations = [Mutation(column=cf + ":" + phone_col, value=str(minNumInt))]
        #print tableName,md5Str,minNumInt
        client.mutateRow(tableName, md5Str, mutations)
        minNumInt += 1
    transport.close()
def getHbaseData(tableName,rowKey):
    host = 'localhost'
    port = 9090
    cf = "cf"
    col = "phoneNumber"
    transport = TBufferedTransport(TSocket(host, port))
    transport.open()
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Hbase.Client(protocol)
    result = client.getRow(tableName, rowKey)
    print result
    for r in result:
        print 'the row is ', r.row
        print 'the values is ', r.columns.get(cf+":"+col).value
    transport.close()

def run():
    #prePhoneStr = "133/153/180/181/189/177/130/131/132/155/156/185/186/145/176/134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178"
    prePhoneStr = "139/175"
    prePhoneNumbers=prePhoneStr.split("/")
    threads = []
    print "prePhoneNumbers:",prePhoneNumbers
    for tableName in prePhoneNumbers:
        threadId = threading.Thread(target=putHbaseData, args=(tableName,),name="threadName"+tableName)
        threads.append(threadId)
    print "threads:",threads
    print "AAAAAAA"
    for t in threads:
        print "BBBBBBB",t
        t.setDaemon(True)
        t.start()
    for t in threads:
        t.join()
    print "Exiting Main Thread"

if __name__ == '__main__':
    print "start ....."
    start_time = time.time()
    run()
    end_time = time.time()
    t = end_time - start_time
    print "脚本用时:", t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小金子的夏天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值