
Алексей
20.06.2018
16:23:28
clickhouse client 2>&1| grep "client version" |awk '{print $4}'
1.1.54385.
clickhouse client 2>&1| grep "client version" |awk '{print $4}' | rev |cut -c 2-| rev
1.1.54385
М — девопс.

yuyu
20.06.2018
16:37:22
Присоветуйте: как сделать из строки(или массива) со списком чисел строку(или массив) без дублей, но с сохранением порядка?
SELECT '1,3,3,5,7,7' as S, splitByChar(',', S) as A, arrayReduce('groupUniqArray', A) as B
выдаёт в 'B' без дублей, но порядок ломает:
1,3,3,5,7,7 ['1','3','3','5','7','7'] ['1','7','5','3']

Tima
20.06.2018
17:25:58
Присоветуйте: как сделать из строки(или массива) со списком чисел строку(или массив) без дублей, но с сохранением порядка?
SELECT '1,3,3,5,7,7' as S, splitByChar(',', S) as A, arrayReduce('groupUniqArray', A) as B
выдаёт в 'B' без дублей, но порядок ломает:
1,3,3,5,7,7 ['1','3','3','5','7','7'] ['1','7','5','3']
Смотрите в сторону arrsyFilter и has

papa
20.06.2018
17:29:46
если они сортированные, то можно в конце отсортировать

Google

papa
20.06.2018
17:30:01
если нет, то можно посмотреть в arrayEnumerateUniq

yuyu
20.06.2018
17:35:52


molo4ko
20.06.2018
17:46:48
Будет. Имхо таблица отсортирована по a,b,c, разбита на куски и примерно известно в каких кусках есть эти значения a,b,c.
create table test(a Int64, b Int64, c Int64, d String)
engine=MergeTree partition by tuple() order by (a,b,c);
insert into test select 1, 0, number, toString(number) from numbers(1000000);
insert into test select 2, 2, number, toString(number) from numbers(100);
insert into test select 3, 3, number, toString(number) from numbers(1000000);
select count() from test where a=2 and c=1;
1 rows in set. Elapsed: 0.002 sec.
select count() from test prewhere a=3 and c=1;
1 rows in set. Elapsed: 0.002 sec. Processed 9.44 thousand rows, 151.10 KB (5.03 million rows/s., 80.44 MB/s.)
select count() from test where a=3;
1 rows in set. Elapsed: 0.003 sec. Processed 1.00 million rows, 8.01 MB (378.03 million rows/s., 3.02 GB/s.)
меняем размер куска:
SETTINGS index_granularity = 1024;
select count() from test prewhere a=3 and c=1;
1 rows in set. Elapsed: 0.002 sec. Processed 2.28 thousand rows, 36.42 KB (1.15 million rows/s., 18.43 MB/s.)
и что интересно, можно обратиться к последнему полю
select count() from test prewhere c=1;
1 rows in set. Elapsed: 0.009 sec. Processed 3.30 thousand rows, 26.40 KB (352.25 thousand rows/s., 2.82 MB/s.)
спасибо, очень хороший ответ
возьму такой прием тестирования на вооружение)


Konstantin
20.06.2018
18:15:37
Присоветуйте: как сделать из строки(или массива) со списком чисел строку(или массив) без дублей, но с сохранением порядка?
SELECT '1,3,3,5,7,7' as S, splitByChar(',', S) as A, arrayReduce('groupUniqArray', A) as B
выдаёт в 'B' без дублей, но порядок ломает:
1,3,3,5,7,7 ['1','3','3','5','7','7'] ['1','7','5','3']
дубли всегда идут подряд в массиве?

yuyu
20.06.2018
18:19:26
Дубли могут быть в любом месте, а может и не быть совсем. Может быть и только единственное число в списке - одно или с дублями. Группы дублей одного числа даже могут встречаться и не один раз в разных местах.

Konstantin
20.06.2018
18:21:39

yuyu
20.06.2018
18:27:04
а остаться должен только элемент на 1й позиции?
Сейчас мне достаточно оставить только первое вхождение уникального числа,
напр. 11,2,11,3,44 -> 11,2,3,4
Потом может и будет потребность оставлять все вхождения, но без дублирования,
напр. 11,2,11,11,3,44 -> 11,2,11,3,4
Но это уже будет другая задача.

Konstantin
20.06.2018
18:27:30
вторую решить легче)

papa
20.06.2018
18:28:58
WITH [11, 2, 11, 3, 44] AS arg
SELECT arrayFilter((x, y) -> (y = 1), arg, arrayEnumerateUniq(arg)) AS res
┌─res─────────┐
│ [11,2,3,44] │
└─────────────┘
WITH [11, 2, 11, 3, 44] AS arg
SELECT arrayFilter((x, y) -> (x != arg[(y + 1)]), arg, arrayEnumerate(arg)) AS res
┌─res────────────┐
│ [11,2,11,3,44] │
└────────────────┘

?
20.06.2018
18:34:44
а как в клиенте с опцией с --multiline – редактировать этот самый мультилайн? как по строкам двигаться?

yuyu
20.06.2018
18:34:58
WITH [11, 2, 11, 3, 44] AS arg
SELECT arrayFilter((x, y) -> (y = 1), arg, arrayEnumerateUniq(arg)) AS res
┌─res─────────┐
│ [11,2,3,44] │
└─────────────┘
В примере на входе 5 и на выходе 5 значений. Но подход ясен. Спасибо за наводку. Завтра уже попробую у себя.

Google

Konstantin
20.06.2018
18:38:44

Wolf
20.06.2018
18:40:13

Tatiana
20.06.2018
19:08:04

Aleksey
20.06.2018
19:10:10
Просто выключили инстансы и удалили папки с данными. Уже понял, что это была ошибка. В итоге руками поудаляли соответствующие записи из зк, и /log сам сразу почистился

Denis
20.06.2018
19:57:44
спасибо, очень хороший ответ
потестил еще, видимо все сложнее, если в первых полях много различных значений, то работать начинает по другому
insert into test select number, 3, 0, toString(number) from numbers(1000000);
insert into test select number, 2, 1, toString(number) from numbers(100);
insert into test select number, 0, 2, toString(number) from numbers(1000000);
SELECT count() FROM test WHERE c=1;
1 rows in set. Elapsed: 0.003 sec. Processed 2.00 million rows, 16.00 MB (791.79 million rows/s., 6.33 GB/s.)


Yuran
20.06.2018
20:38:28
Никто не сталкивался с проблемой, когда INSERT в буферную таблицу просто зависает? За буферной таблицей находится ReplicatedMergeTree, и очень похоже, что на самом деле не вставляется именно туда. Версия 1.1.54385, последняя.
На машине диск и CPU свободны
На второй машине в реплике все проходит нормально и инсерты не зависают. Kill -9 помог кликхаусу «отвиснуть»
в логах есть такие строки: 2018.06.20 21:09:23.896484 [ 22 ] <Error> default.table_name (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Timeout: connect timed out: 192.168.3.10:9009, e.what() = Timeout

Николай
21.06.2018
04:45:52
Подскажите, а функция pointInPolygon - это тоже самое, что St_within из postgis? https://postgis.net/docs/ST_Within.html

Vasilij
21.06.2018
06:30:58
А в КХ можно сделать список дат по данному интервалу как-то проще, чем так?
SELECT arrayJoin(arrayMap(x -> (toDate('2018-05-01') + x), range(toUInt8(toDate('2018-05-31') - toDate('2018-05-01'))))) AS Date

Stepan
21.06.2018
07:41:21
а поделитесь пожалуйста однострочником на создание бекапов, если есть, а то вот так не работает:
SELECT (ALTER TABLE table FREEZE PARTITION partition) FROM system.parts WHERE active group by partition,table;

Дмитрий
21.06.2018
07:55:24
Здравствуйте!
Есть одиночный сервер КХ.
На нем есть таблица, над которой вью:
CREATE TABLE IF NOT EXISTS url_events (
url_id UInt32,
date_hour DateTime DEFAULT toString(toStartOfHour(now()), 'UTC'),
click UInt32,
show UInt32
) ENGINE = Log
и
CREATE MATERIALIZED VIEW IF NOT EXISTS url_events_agg
ENGINE = SummingMergeTree((click, show)) /* столбцы для суммирования */
PARTITION BY date_hour
ORDER BY (url_id, date_hour) /* ключи */
AS
SELECT * FROM url_events
Как теперь с этим переехать в кластер? (2 шарда по 2 реплики)
Таблицу менять на ReplicatedMergeTree, над ней строить Distributed, а над ней уже View? И вью что, дублировать на каждой ноде?
Или есть лучше вариант?


Vasilij
21.06.2018
08:05:40
Здравствуйте!
Есть одиночный сервер КХ.
На нем есть таблица, над которой вью:
CREATE TABLE IF NOT EXISTS url_events (
url_id UInt32,
date_hour DateTime DEFAULT toString(toStartOfHour(now()), 'UTC'),
click UInt32,
show UInt32
) ENGINE = Log
и
CREATE MATERIALIZED VIEW IF NOT EXISTS url_events_agg
ENGINE = SummingMergeTree((click, show)) /* столбцы для суммирования */
PARTITION BY date_hour
ORDER BY (url_id, date_hour) /* ключи */
AS
SELECT * FROM url_events
Как теперь с этим переехать в кластер? (2 шарда по 2 реплики)
Таблицу менять на ReplicatedMergeTree, над ней строить Distributed, а над ней уже View? И вью что, дублировать на каждой ноде?
Или есть лучше вариант?
Если данные view должны реплицироваться (а обычно так и есть), то в кластере создается ReplicatedSummingMergeTree таблица, на которую уже указывает вью (через TO). Да, и таблица и вью дублируются на каждой ноде - кто его знает, на какую ноду вы будете писать? А дальше записали на любой ноде - и данные, которые вью сбросила в таблицу, разъехались по остальным нодам.


Denis
21.06.2018
13:53:05

Vasilij
21.06.2018
13:58:36

Zo zo
21.06.2018
14:39:41
перестраивали кластер, поймали
code: 252, message: Too many parts (301). Merges are processing significantly slower than inserts.
стакливался кто?
прчием даже при записи в те части кластера, которые не трогали

Wolf
21.06.2018
14:40:18
по идее при аттаче данных на одном шарде в две реплики стало много партов, но почему оно заблокировало при этом запись в другой шард где нет такой проблемы

Google

Alexey
21.06.2018
14:46:18
вот
Можно поменять в config.xml и рестартовать КХ
<merge_tree>
<parts_to_throw_insert>500</parts_to_throw_insert>
</merge_tree>
у меня там скакало 300-400, я на всякий случай выставил 1000, все прошло хорошо

Kirill
21.06.2018
16:13:21

Mikhail
21.06.2018
16:16:00
Привет. При инсталле CH с нуля на ubuntu 18.04 в консоли apt-get вылезло вот такое:
Executing: /lib/systemd/systemd-sysv-install enable clickhouse-server
/var/lib/dpkg/info/clickhouse-server-base.postinst: 34: [: unexpected operator
/var/lib/dpkg/info/clickhouse-server-base.postinst: 34: [: unexpected operator
/var/lib/dpkg/info/clickhouse-server-base.postinst: 34: [: unexpected operator
Содержимое этой и 2 предыдущих строк:
# Make sure the administrative user exists
if ! getent passwd ${CLICKHOUSE_USER} > /dev/null; then
if [ "$OS" == "rhel" ] || [ "$OS" == "centos" ] || [ "$OS" == "fedora" ]; then
видимо, есть какая-то опечатка в скрипте из пакета. Дальше разбираться не стал.

Victor
21.06.2018
16:17:04
Я вчера ставил на убунту 16.04, поставилось норм, только ругнулось на chown, емнип, что нет юзера clickhouse, но всё работает

prll
21.06.2018
16:17:40
уже исправлено
и chown и unexpected operator


Mikhail
21.06.2018
16:19:35
а какая версия поставилась ? в последних релиза холжно уж ебыть
Get:9 http://repo.yandex.ru/clickhouse/deb/stable main/ clickhouse-server-base 1.1.54385 [238 MB]
Get:10 http://repo.yandex.ru/clickhouse/deb/stable main/ clickhouse-client 1.1.54385 [3,578 B]
Get:11 http://repo.yandex.ru/clickhouse/deb/stable main/ clickhouse-server-common 1.1.54385 [7,798 B]

Wolf
21.06.2018
16:19:56

shawn
22.06.2018
05:06:39
i clone the master batch from GitHub and build on gcc 8.1.0 at Mac book 。
the gcc report this error ,who can help me please

Evgeny
22.06.2018
06:36:30
for mac os you can try this one, works for me https://github.com/arduanov/homebrew-clickhouse
or docker

shawn
22.06.2018
06:42:22
think s evgeny
but i want complied and gdb debug flow the latest version

Nik
22.06.2018
07:40:05
Документация по sumMap не соответствует реализации, написано что тип для ключа может быть числом или датой, но на деле при использовании дат выдает ошибку о не соответствии типов

Тимур
22.06.2018
08:14:43
Добрый день, есть столбец с примерно такой последовательностью
[NA, NA, NA, id1, NA, NA, id2, id3, NA, NA, NA] . Необходимо все NA значения, которые идут после значения "id_*" заменить на соответствующее. Т.е.
(NA, NA, NA, id1, NA, NA, id2, id3, NA, NA, NA) ->
(NA, NA, NA, id1, id1, id1, id2, id3, id3, id3, id3)
Как это можно провернуть?

Google

Mariya
22.06.2018
08:18:52
Привет, можно сделать left join таблицы на себя с фильтром id != NA и вычислить нужное поле с помощью аггрегатной функции argMin(id, time) (time - поле, по которому упорядочены)

Тимур
22.06.2018
08:22:55
спасибо!

Viktor
22.06.2018
08:29:30
Привет.
Сможет кто-то подсказать статьи/доклады/документацию по траблшутингу использования ресурсов кликхаусом?
То память скачет, то цпу, лог ничего подозрительного не показывает.
Возможно, принято смотреть где-то еще?

Tima
22.06.2018
08:32:00

Олег Иванович
22.06.2018
08:32:46
у меня похожий вопрос, только ситуация другая
запустили в docker-compose ноду, а она падает, в логах ничего нет
с kubernetes думаю будет аналогичная история

Wolf
22.06.2018
08:41:00

Олег Иванович
22.06.2018
08:41:31
в логах КХ, почему он падает

Viktor
22.06.2018
08:44:51

Олег Иванович
22.06.2018
08:47:08
может есть какие-то хорошие статьи? как правильно запускать КХ в docker-compose/kubernetes

Wolf
22.06.2018
08:50:39

Олег Иванович
22.06.2018
08:51:18

Wolf
22.06.2018
08:52:15
compose logs?

Олег Иванович
22.06.2018
08:52:27
да

Wolf
22.06.2018
08:52:40
всегда там без проблем поднимался

Олег Иванович
22.06.2018
08:53:26
... видимо проблемы начинаются тогда, когда данные выносятся за пределы контейнера

Wolf
22.06.2018
08:54:35
что значит данные выносятся за пределы контейнера ?
какая то новая фишка в докере что ли ?

Victor
22.06.2018
08:55:16

Google

Олег Иванович
22.06.2018
08:55:54

Wolf
22.06.2018
08:56:09

Tima
22.06.2018
09:46:26

Viktor
22.06.2018
09:46:44
thx

Nik
22.06.2018
09:47:33
КХ работает в кубернете, волумы вне контейнера, нагрузка на запись порядка 5к вставок в секунду, три сервера и три реплики, полет в течении 14 дней нормальный (ни одного падения)

Maxoid
22.06.2018
10:40:23
Всем привет! Подскажите как реализовать бэкап мерж таблиц с партициями и таблицы типа tinylog? Полный, дифференциальный. Таблиц много разных и как это грамотно автоматизировать пока мыслей нет(

Daniel
22.06.2018
10:56:45
Привет, у кого-нибудь может есть промокоды на Highload Siberia? Там два доклада будет по теме Clickhouse.
https://habr.com/company/oleg-bunin/blog/414527/