python读写hbase

#!/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小金子的夏天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值