CLI и Python API

Чтобы запустить свою клику или отправить запрос в CHYT из программы либо из командной строки, можно воспользоваться CHYT CLI и CHYT Python API. Они могут быть получены в составе пакета ytsaurus-client.

Утилита командной строки воспринимает две переменные окружения: YT_PROXY и CHYT_ALIAS. С помощью первой из них можно указать кластер YTsaurus, а с помощью второй — используемую клику.

Например, под Linux и macOS можно использовать следующую команду, чтобы установить переменные окружения и больше не передавать параметры --proxy <cluster_name> и --alias *ch_public во все последующие вызовы:

export YT_PROXY=<cluster_name> YT_ALIAS=*ch_public
Про использование параметра --alias

В CHYT CLI, в зависимости от команды, название клики передаётся по-разному — либо с использованием звёздочки *, либо без неё.

  1. Команду execute нужно всегда вызывать со звёздочкой и ключом --alias. Пример:

    yt clickhouse execute --proxy <cluster_name> --alias *<clique_name>
    

    Это связано с тем, что команда достаточно старая — в ней зашита логика, опирающаяся на алиасы YTsaurus операций, где они имеют звёздочку в самом начале.

  2. В командах семейства yt clickhouse ctl звёздочку * можно опустить. Пример:

    yt clickhouse ctl start <clique_name>
    

    Однако для обратной совместимости включена поддержка старого формата записи. Пример:

    yt clickhouse ctl start *<clique_name>
    

Запускающий клику процесс иногда может неформально называться лончером.

ytsaurus-client

Основной способ начать работать с YTsaurus — установить пакет ytsaurus-client. Подробнее об этом можно прочитать в статье Python Wrapper.

В составе распространяется программа yt. Для того чтобы воспользоваться функциональностью CHYT, можно запустить любую команду как yt clickhouse [command].

Например, следующим образом можно сделать тестовый запрос в публичную клику ch_public:

yt clickhouse execute "select 'Hello world'" --alias *ch_public

Помимо этого пакет содержит Python API для работы с CHYT, доступный в модуле yt.clickhouse:

python3
Python 3.7.3 (default, Oct  7 2019, 12:56:13)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import yt.clickhouse as chyt
>>> import yt.wrapper as yt
>>> client = yt.YtClient("<cluster_name>")
>>> list(chyt.execute("select * from `//home/user/sample_table`", alias="*ch_public", client=client))
[{'a': 100}, {'a': 101}, {'a': 102}, {'a': 205}, {'a': 206}, {'a': 1100}]

Библиотека доступна для Python 3.

Детальную спецификацию возможностей Python API и CLI вы можете найти в статье Выполнение запросов.