суббота, 20 июня 2020 г.

База RIAK и клиент PYTHON

База 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


Комментариев нет:

Отправить комментарий