Перейти к основному содержанию
Перейти к основному содержанию

Функция таблицы urlCluster

Позволяет обрабатывать файлы из URL параллельно с нескольких узлов в указанном кластере. На узле-инициаторе она устанавливает соединение со всеми узлами кластера, раскрывает символ «звёздочка» в пути URL к файлам и динамически распределяет каждый файл. На рабочем узле она запрашивает у инициатора следующую задачу и обрабатывает её. Это повторяется до тех пор, пока все задачи не будут выполнены.

Синтаксис

urlCluster(cluster_name, URL, format, structure)

Аргументы

АргументОписание
cluster_nameИмя кластера, используемое для формирования набора адресов и параметров подключения к удалённым и локальным серверам.
URLАдрес HTTP- или HTTPS-сервера, который может принимать запросы GET. Тип: String.
formatФормат данных. Тип: String.
structureСтруктура таблицы в формате 'UserID UInt64, Name String'. Определяет имена и типы столбцов. Тип: String.

Возвращаемое значение

Таблица заданного формата и структуры с данными из указанного URL.

Примеры

Получение первых трёх строк таблицы со столбцами типов String и UInt32 от HTTP-сервера, который отвечает в формате CSV.

  1. Создайте базовый HTTP-сервер с использованием стандартных инструментов Python 3 и запустите его:
from http.server import BaseHTTPRequestHandler, HTTPServer

class CSVHTTPServer(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/csv')
        self.end_headers()

        self.wfile.write(bytes('Привет,1\nмир,2\n', "utf-8"))

if __name__ == "__main__":
    server_address = ('127.0.0.1', 12345)
    HTTPServer(server_address, CSVHTTPServer).serve_forever()
SELECT * FROM urlCluster('cluster_simple','http://127.0.0.1:12345', CSV, 'column1 String, column2 UInt32')

Шаблоны (globs) в URL

Шаблоны в фигурных скобках { } используются для генерации набора шардов или указания резервных (failover) адресов. Поддерживаемые типы шаблонов и примеры см. в описании функции remote. Символ | внутри шаблонов используется для указания резервных адресов. Они перебираются в том же порядке, в котором перечислены в шаблоне. Количество сгенерированных адресов ограничивается параметром glob_expansion_max_elements.