Проблема при добавлении данных в HBase
Всем привет.
Подскажите, пожалуйста, при попытке покласть данные в HBase получаю ошибку:
ValueError: invalid literal for int() with base 10: '1422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.7071422734399.707142
Сам код такой:
есть mapper, который принимает на вход данные, парсит их и должен выгрузить в Hbase
#!/opt/anaconda/envs/bd9/bin/python
import sys
import happybase
def emit(uid, timestamp, url):
sys.stdout.write('{}\t{}\t{}\n'.format(uid, timestamp, url))
def emit2(uid, timestamp, url):
connection = happybase.Connection('server')
table = connection.table('name')
b = table.batch(timestamp=(int(timestamp*1000)))
try:
b.put('uid:', {'cf:url': 'data:url'})
raise ValueError('Something went wrong!')
except ValueError as e:
pass
else:
b.send()
def map(line):
objects = line.split('\t')
if len(objects) == 3:
uid, timestamp, url = objects
if len(uid) > 1 and len(url) > 1 and url.startswith('http') and int(uid) % 2 == 0:
emit2(uid, timestamp, url)
def main():
for line in sys.stdin:
map(line.strip())
if __name__ == '__main__':
main()
Содержимое таблицы должно представлять собой rowkey=uid и column=data:url. Отметка времени в базе должна совпадать с отметкой в файле, а не с моментом, когда запись попала в базу.
❗️Обратите внимание: отметку надо умножить на 1000 и привести к int: int(ts * 1000).