问题
在清洗数据的过程中开发了这样一个功能,由于我们的数据传输上来的经纬度,缺少地址信息,所以,设计了一个先从hbase里读取经纬度对应的地址数据,如果没有查询到符合的数据,再去从高德地图进行经纬度反向查询,获取到数据后,缓存在HBase中。
潜在问题
高德地图有每日200万次调用的限制,如果突破了,数据就会有问题;
实现方式
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
from hbase.ttypes import ColumnDescriptor
from hbase.ttypes import Mutation
class HBaseClient(object):
def __init__(self):
self._ip = "192.168.1.211"
self._port = 9090
self._transport = self.createSocket
protocol = TBinaryProtocol.TBinaryProtocol(self._transport)
self._client = Hbase.Client(protocol)
self._transport.open()
@property
def createSocket(self):
CS = TSocket.TSocket(self._ip, self._port)
CS.setTimeout(60*1000)
return TBufferedTransport(CS)
def __del__(self):
self._transport.close()
def get_tables(self):
"""
get all table name
:return: table name list
"""
return self._client.getTableNames()
def create_table(self, table, *columns):
"""
create table
:param table: table name
:param columns: columns name , variable parameter
"""
func = lambda col: ColumnDescriptor(col)
column_families = list(map(func, columns))