База RIAK и клиент PYTHON
Для корректной работы клиента RIAK, кроме самого PYTHON нужны дополнительные расширения:
#yum install python3-devel
#yum install libffi libffi-devel
#yum install openssl-devel
Теперь можно установить расширение python:
#pip3 install riak (для CentOS8 и python3)
#pip install riak (для CentOS7)
Пример скрипта извлечения данных (семейство rooms, ключ 201)
#!/usr/bin/env python# -*- coding: utf-8 -*-
import random
import json
import riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc', host='10.10.49.162')
myBucket = myClient.bucket('rooms')
fetched = myBucket.get('201')
print (fetched.encoded_data)
print (fetched.data)
Пример скрипта вставки данных:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import json
import riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc', host='10.10.49.162')
myBucket = myClient.bucket('rooms')
STYLES = ['single', 'double', 'queen', 'king', 'suite'] # Типы номеров
for x in range(1,1000):
style = random.choice(STYLES)
capacity = random.randint(1, 8)
d = {"style": style, "capacity": capacity}
key = myBucket.new(str(x), data=d)
key.store()
Пример скрипта получения данных MapReduce:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
import json
import riak
myClient = riak.RiakClient(pb_port=8087, protocol='pbc', host='10.10.49.162')
myBucket = myClient.bucket('rooms')
mapred = riak.mapreduce.RiakMapReduce(myClient)
mapred.add_bucket("rooms")
mapred.add_key_filters([["string_to_int"], ["less_than", 500]])
mapred.map("""
function(v) {
var parsed_data = JSON.parse(v.values[0].data);
var data = {};
data[parsed_data.style] = parsed_data.capacity;
return [data];
}
""")
mapred.reduce("""
function(v) {
var totals = {};
for (var i in v) {
for (var style in v[i]) {
if (totals[style]) totals[style] +=v[i][style];
else totals[style]=v[i][style];
}
}
return [totals];
}
""")
results = mapred.run()
print (results)
Ссылка на документацию
https://riak-python-client.readthedocs.io/en/1.5-stable/index.html
Комментариев нет:
Отправить комментарий