@clickhouse_ru

Страница 93 из 723
Dmitry
19.03.2017
09:14:35
Да, мы так и делаем

Более того, это будет лучше с точки зрения производительности кластера

Yury
19.03.2017
09:18:33
Правильно я понял что если при создании distributed таблицы без указания ключа шардирования, при записи в неё данных распределение по шардам будем происходить рандомно?

Google
Геннадий
19.03.2017
09:45:33
А вы это кто? Если не секрет :) Мы это Контур)

https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/ очередное сравнение разных column store DB, в том числе Clickhouse

Igor
19.03.2017
09:53:08
TL;DR: кликхаус порвал MariaDB ColumnStore и Apache Spark в щепки, зато у них оконные функции есть

Dmitry
19.03.2017
11:01:21
Если вдруг интересно, то вот https://events.yandex.ru/lib/talks/3715/

Геннадий
19.03.2017
11:03:17
ага, спасибо ещё раз за ответ.

Dmitry
19.03.2017
11:04:58
Но distributed таблицу легко пересоздать

Yury
19.03.2017
15:47:29
Да, логично. Рандомное распределение при записи в distributed таблицу было бы сделать удобно на мой взгляд. Когда нет явного ключа шардированая но при этом кластер используется.

Dmitry
19.03.2017
15:58:19
Если нужно рандомное распределение и есть постоянный поток данных эффективнее просто вставлять каждый батч на случайную реплику

Данные будут так же случайно распределены, но зато вставка будет синхронная и количество вставок на хост будет меньше

Т.к. вставка в распределенную таблицу порождает вставки на все шарды кластера, а вставка в конечную таблицу только одну

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

Google
Yury
19.03.2017
16:06:50
Для упрощения в такой конфигурации можно поднять над кластером балансер и работать только через него
а есть что-то готовое? Что можно использовать для разрешения такой конфигурации записи?

Dmitry
19.03.2017
16:24:56
Любой http балансер. Nginx, haproxy

Square
20.03.2017
03:35:58
Ребят, возможно тупой вопрос который не раз задавали, но ответа нарисерчить не можем. При вставке в дистрибьютед табличку кидает в лог эксепшн, ругаясь на материализованное поле date. стектрейс http://pastebin.com/dtC2im5T

Combot
20.03.2017
06:57:17
combot.org/chat/-1001080295593

Dig
20.03.2017
07:21:47
День добрый, пытаюсь разобраться с индексами. Есть таблица

CREATE TABLE default.bounce ( date Date, reportDate DateTime, processedDate DateTime, userId Int64, type Int8, bounceEmail String, bounceDomain String, fromEmail String, fromDomain String, messageId String, subject String, code String, customField String) ENGINE = MergeTree(date, (userId, type, processedDate), 8192) и запрос вида: select bounceDomain, count() as total from bounce where type = 1 group by bounceDomain order by total desc limit 10 Нужно ли добавлять bounceDomain в индекс? При тестировании не заметил в разности в скорости.

Mike
20.03.2017
09:30:14
Коллеги, а кто-то пробовал бесплатный ETL с кликхаусом подружить?

С каким заработало, интересно

Yury
20.03.2017
09:32:42
Бесплатный это какой?

Dig
20.03.2017
09:41:22
Нет. Т.к. запросу не нужна фильтрация по этому полю
Спасибо. А если понадобится запрос с LIKE, то лучше включать поле в фильтр?

Dmitriy
20.03.2017
09:46:30
Привет всем. Подскажите насколько может быть оправдано добавление timestamp в первичный ключ. Для себя делаю такой вывод что это ускорит наши запросы так как в каждом из них будет учитыватся именно timestamp А сами данные будут разложены более эффективнее

Из учета, что в первичном ключе будет использоватся поле с типом Date

Dmitry
20.03.2017
10:05:08
Спасибо. А если понадобится запрос с LIKE, то лучше включать поле в фильтр?
Нет. В кх нету полнотекстовых индексов. Все равно будет фулскан

Mike
20.03.2017
10:41:21
Бесплатный это какой?
Их много: Talend, Pentaho, Jaspersoft делают

Yury
20.03.2017
10:45:37
Если эти инструменты поддерживают разработку своих трансформаций, то я думаю нет никаких проблем разработать на них свой loader в clickhouse

Alexander
20.03.2017
10:52:42
CREATE TABLE default.bounce ( date Date, reportDate DateTime, processedDate DateTime, userId Int64, type Int8, bounceEmail String, bounceDomain String, fromEmail String, fromDomain String, messageId String, subject String, code String, customField String) ENGINE = MergeTree(date, (userId, type, processedDate), 8192) и запрос вида: select bounceDomain, count() as total from bounce where type = 1 group by bounceDomain order by total desc limit 10 Нужно ли добавлять bounceDomain в индекс? При тестировании не заметил в разности в скорости.
Тут есть вопрос к Яндексу. Если бы эта колонка стояла где-то в начале первичного ключа, то можно было бы существенно ускорить group by, так как данные уже частично отсортированы. Это называется pipelined group by. Насколько я понимаю, ClickHouse так не делает, хотя мог бы.

Google
Vladislav
20.03.2017
11:09:55
Коллеги, а кто-то пробовал бесплатный ETL с кликхаусом подружить?
JDBC есть, так что подружить можно, вопрос только, взлетят ли дефолтные компоненты или надо будет свои писать

Mike
20.03.2017
11:42:29
Юрий, Владислав, теоретически -- поддерживают. Я и спрашивал, может быть уже потанцевали на граблях до нас :)

Yury
20.03.2017
12:03:06
Мы Airflow используем, пока используем связку BashOperator и clickhouse-client.

Mike
20.03.2017
12:26:10
Интересное решение!

Sergei
20.03.2017
14:32:57
Добрый день! Кто нибудь юзает докер под мак? Поставил latest с хаба и не могу соединиться к порту 8123. Раньше все ок было. Если зайти в контейнер, то все ок с соединением

prll
20.03.2017
14:37:09
https://github.com/yandex/ClickHouse/pull/613/files

Vladimir
20.03.2017
14:37:51
Сергей проверьте листен адрес. Возможно указан только локальный

prll
20.03.2017
14:37:54
<listen_host>::</listen_host> в конфиг добавить или заменить

да, теперь по умолчанию он локальный

Dmitriy
20.03.2017
15:02:59
сделал пару экспериментов с первичным ключем 725млн данных, таблица 64 поля место первичный ключ время выполнения первого запроса 65G ./events_temp_tv11 timestamp, traffic_source_id, ch_date 9 сек 78G ./events_temp_1_tv11 traffic_source_id, ch_date 36 сек 95G ./events_temp_2_tv11 traffic_source_id, timestamp 12 запрос имеет условие WHERE (timestamp>=1483228800 AND timestamp<=1485907199) - полный январь месяц

Andrey
20.03.2017
15:06:11
А сколько ждали после заливки?

там со временем данные ужимаются

Dmitriy
20.03.2017
15:07:39
после последней заливки минут 5 это temp_2 первых две уже прошло два часа

да изменились показатели. 65G ./events_temp_tv11 65G ./events_temp_2_tv11 78G ./events_temp_1_tv11

Almaz
20.03.2017
20:23:02
Добрый вечер! Как можно сделать выборку по периоду? В частности события до 9:30 утра, после 21:00.

Использовать toHour, toMinute?

Есть способы проще ?

Alexey
20.03.2017
20:27:47
Можно просто datetime <= '2017-03-20 09:30' Также можно использовать функцию toTime, чтобы оставить только время (дата приравнивается к фиксированной).

Almaz
20.03.2017
20:29:59
Если нужно выбрать события с 9:30 до 21:00 без учета дня, то лучше использовать toTime?

Google
Almaz
20.03.2017
20:30:09
Если правильно понял

Igor
20.03.2017
20:30:27
да, там всегда 1970-01-02 будет

кстати, почему не 1970-01-01? иначе это, типа, дата будет? (ну, по той же причине, по которой toDateTime(100) - это кол-во дней от unixtimestamp, а toDateTime(100000) - это уже кол-во секунд)

Vladimir
21.03.2017
13:14:46
Добрый день! Появился такой странноватый вопрос. Скажите, пожалуйста, если требуется хранить массивы заранее известного небольшого размера (например, 10 элементов), и за каждый запрос необходим только фиксированный N-ый элемент, то эффективнее хранить и запрашивать его, если он arr Array(String), или, если он, как китайский лапшекод: arr_0 String, arr_1 String ... arr_10 String?

И сразу вдогонку ещё вопрос. А какие есть варианты хранить вложенные массивы строк? как бы Array(Array(String)). Можно хранить в виде Array(String), где каждая String — строка с разделителем, но тогда почему-то запрос из ARRAY JOIN, GROUP BY и splitByString падает по памяти, причём запрос может быть самым простым и в итоге не требует хранить все строки

Очень мнго памяти ест, например даже такой запрос ест многие гигабайты памяти, хотя на выходе должен выдать всего несколько строк в ответе: matrix Nested( paths String -- каждая строка вида: 'A//B//C', 'A//B//D', 'D//E//F' ) SELECT length(splitByString('//', path)) AS path_len, count() FROM ch_table ARRAY JOIN matrix.paths AS path GROUP BY path_len ORDER BY path_len DESC LIMIT 100;

Alexey
21.03.2017
13:25:45
1. Много столбцов эффективнее (за исключением случая, когда их слишком много).

2. Уменьшите max_block_size, например, так: SET max_block_size = 8192 или постоянно - в users.xml в profiles #faq

Минимальное значение max_block_size, который имеет смысл указывать - это index_granularity вашей таблицы. Если в вашей таблице все строки толстые, то можете пересоздать её с меньшим index_granularity (это последний параметр для MergeTree). #faq

Vladimir
21.03.2017
13:32:04
Спасибо большое! max_block_size — прикольный параметр, не знал про него)

Roman
21.03.2017
13:33:07
Минимальное значение max_block_size, который имеет смысл указывать - это index_granularity вашей таблицы. Если в вашей таблице все строки толстые, то можете пересоздать её с меньшим index_granularity (это последний параметр для MergeTree). #faq
Алексей, можете в конце таких общего плана ответах указывать какой-нибудь поисковый тег типа # faq manual или howto. Так можно будет ваши полезные ответы потом быстро находить :)

Roman
21.03.2017
13:35:45
Спасибо, постараюсь не забыть :)
Спасибо! Вот так шикарно просто!

Aleksey
21.03.2017
14:22:03
1. Много столбцов эффективнее (за исключением случая, когда их слишком много).
А слишком много это сколько? Каков порядок 100, 1000 или 10000 ?

Anatoliy
21.03.2017
14:58:19
Добрый день

Может кто подскажет. Использую версию сервера 1.1.53981 (докер yandex/clickhouse-server). Пробую подлючится через jdbc драйвер собранный отсюда: https://github.com/yandex/clickhouse-jdbc. Подключаю драйвер в Talend, указываю сборку clickhouse-jdbc-0.1-SNAPSHOT-jar-with-dependencies и при подключении происходит ошибка: Ошибка соединения. Вы должны изменить настройки базы данных. java.lang.RuntimeException: java.lang.RuntimeException: ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 46, host: localhost, port: 8123; Code: 46, e.displayText() = DB::Exception: Unknown function timezone, e.what() = DB::Exception, Stack trace..... Такой функции действительно нет. Подключался через clickhouse-client. То есть при подключении сам драйвер выполняет такой запрос select timezone(). Вот строка кода с этим запросом на github: https://github.com/yandex/clickhouse-jdbc/blob/master/src/main/java/ru/yandex/clickhouse/ClickHouseConnectionImpl.java#L64

В документации тут https://clickhouse.yandex/reference_ru.htm, тоже не встретил такой функции

Как будто ее и не существует

Google
Kirill
21.03.2017
15:08:43
обновите ваш кликхаус

papa
21.03.2017
15:09:04
да, последняя версия драйвера работает с более поздними версиями сервера.

Igor
21.03.2017
15:09:07
в чейнджлоге jdbc драйвера написано

0.1.18 NOTE: starting from this release server timezone is used by default. This will work with server version >= 1.1.54159. Set use_server_time_zone = false and use_time_zone to desired timezone name for using with earlier server versions.

papa
21.03.2017
15:09:18
в changelog написано, да.

Nataliya
21.03.2017
17:22:10
Друзья! Открылась регистрация на ClickHouse митап в Новосибирске 3 апреля. Регистрируйтесь и делитесь новостью с коллегами в сибирском регионе. https://twitter.com/ya_events/status/843771103441010689 https://vk.com/yandex.events?w=wall-17796776_5203 https://www.facebook.com/Yandex.Events/photos/a.207908329229296.53451.122612334425563/1475215179165265/?type=3&theater

Страница 93 из 723