---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/flow/python/examples/wordcount.md
  - https://ytsaurus.tech/docs/ru/flow/python/examples/wordcount.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/flow/python/examples/wordcount.md -->
# Word Count в YTsaurus Flow (Python)

Простейший пример stateful-[пайплайна](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#pipeline) на Python: подсчёт количества вхождений каждого слова с использованием внутреннего YSON-[стейта](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#state).

[Исходный код](https://github.com/ytsaurus/ytsaurus/tree/main/yt/yt/flow/examples/python/word_count)

## Структура

Пайплайн состоит из одного transform-[компьютейшена](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#stream-and-computation) `mapper`, который читает слова из входного [стрима](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#stream-and-computation) и обновляет счётчик в стейте.

## `__main__.py`

Точка входа: создание пайплайна и регистрация единственного компьютейшена.

{% code '/yt/yt/flow/examples/python/word_count/__main__.py' lang='python' lines='[BEGIN main]-[END main]' %}

## `word_count_mapper.py`

`RowFunction`, использующая `ctx.state()` для работы с YSON-стейтом. Для каждого ключа сообщения хранится словарь с полями `word` и `count`.

{% code '/yt/yt/flow/examples/python/word_count/word_count_mapper.py' lang='python' lines='[BEGIN word_count_mapper]-[END word_count_mapper]' %}

## Ключевые паттерны

- Простейший stateful-пайплайн с одним компьютейшеном.
- Внутренний YSON-стейт через `ctx.state()` с `get_or_default` / `set`.
- Ключ стейта определяется `group_by_schema` из [спеки](https://ytsaurus.tech/docs/ru/flow/concepts/glossary.md#spec-and-dynamic-spec) (в данном случае -- по полю `word`).
<!-- endsource: ru/_includes/flow/python/examples/wordcount.md -->

<!-- source: ru/_includes/flow/python/examples/wordcount_also.md -->
## См. также

- [Быстрый старт (Python)](https://ytsaurus.tech/docs/ru/flow/python/getting-started.md)
- [Computation (Python)](https://ytsaurus.tech/docs/ru/flow/python/computation.md)
- [Stateful processing](https://ytsaurus.tech/docs/ru/flow/concepts/stateful.md)
<!-- endsource: ru/_includes/flow/python/examples/wordcount_also.md -->
