Вступ до Dask bags

Паралельне програмування з Dask у Python

James Fulton

Climate Informatics Researcher

Що таке неструктуровані дані?

# Неструктуровані текстові дані
string_list = [
    "Really good service ...",
    "This is the second time we've stayed ...", 
    "Great older hotel. My husband took ...",
    ...]

# Напівструктуровані дані-словники
dict_list = [
    {"name": "Beth", "employment": [{"role": "manager", "start_date": ...}, ...]},
    {"name": "Omar", "employment": [{"role": "analyst", "start_date": ...}, ...]},
    {"name": "Fang", "employment": [{"role": "engineer", "start_date": ...}, ...]},
    ...]
Паралельне програмування з Dask у Python

Dask bags

import dask.bag as db


# Створіть Dask bag зі списку bag_example = db.from_sequence(string_list, npartitions=5)
print(bag_example)
dask.bag<from_sequence, npartitions=5>
# Виведіть один елемент з bag
print(bag_example.take(1))
('Really good service ...',)
Паралельне програмування з Dask у Python

Dask bags

import dask.bag as db

# Створіть Dask bag зі списку
bag_example = db.from_sequence(string_list, npartitions=5)
print(bag_example)
dask.bag<from_sequence, npartitions=5>
# Виведіть два елементи з bag
print(bag_example.take(2))
('Really good service ...', 'This is the second time we've stayed ...'',)
Паралельне програмування з Dask у Python

Кількість елементів

number_of_elements = bag_example.count()
print(number_of_elements)
<dask.bag.core.Item at ...>
print(number_of_elements.compute())
20491
Паралельне програмування з Dask у Python

Завантаження текстових даних

import glob

filenames = glob.glob('data/*.txt')
print(filenames)
["data/file_0.txt", "data/file_1.txt", "data/file_2.txt"]
text_data_bag = db.read_text(filenames)
text_data_bag = db.read_text('data/*.txt')
print(text_data_bag)
dask.bag<bag-from-delayed, npartitions=3>
Паралельне програмування з Dask у Python

Операції зі строками

text_data_bag = db.read_text('data/*.txt')

print(text_data_bag.take(1))
('Really good service ...',)
# Перетворіть текст на нижній регістр
print(text_data_bag.str.lower().take(1))
('really good service ...',)
Паралельне програмування з Dask у Python

Операції зі строками

# Замініть 'good' на 'great' усюди
print(text_data_bag.str.replace('good', 'great').take(1))
('Really great service ...',)
# Скільки разів 'great' з'являється в перших 3 елементах bag?
print(text_data_bag.str.count('great').take(3))
(0,1,5,)
Паралельне програмування з Dask у Python

Давайте потренуємось!

Паралельне програмування з Dask у Python

Preparing Video For Download...