@clickhouse_ru

Страница 536 из 723
Alexey
23.05.2018
09:19:36
Выскочили ошибки в репликации в мониторинге, мониторю селектом из документации. Тупо пересоздал таблицу, данные с другой реплики скачались, ошибки ушли, всем спасибо :)

Дмитрий
23.05.2018
11:11:49
всем привет, у меня тормозит кликхаус))) Посоветуйте, что делать. Если чесно я думал такого не будет т.к. данных у меня не очень много, 0.5 миллиард в месяц. в базе примерно 30 колонок, запросы делается на 10 из них (Uint32, дата, float64). Запросы еденичные выполняются редко. (машинка под кликхаус AMD Ryzen 7 1700X Eight-Core Processor 63 GB). По всем колонкам sum. вот например простой select типа SELECT SUM(field), sum(field), sum(field), sum(field), sum(field), sum(field), sum(field), sum(field), sum(field), sum(field), sum(field) FROM event WHERE event_date>=toDate('2018-04-23');

выдает мне вот такой результат

Elapsed: 7.765 sec. Processed 675.90 million rows, 47.31 GB (87.04 million rows/s., 6.09 GB/s.)

Google
Дмитрий
23.05.2018
11:12:45
Это нормально или я делаю что-то не так? Можете посоветовать, что-то кроме горизонтального маштабирования?)

Alexey
23.05.2018
11:14:37
там чуть ниже промотать, или CTRL+F "Если этот запрос ничего не возвращает - значит всё хорошо."

Anton
23.05.2018
11:22:19
Дмитрий
23.05.2018
11:25:29
Это нормально, а что вас смущает?
Спасибо за ответ, смущает скорость) Очень нужно быстрее. Видимо больше компьютеров мой вариант? Есть еще возможность агрегировать данные, как вы считает стоит оно того или нет?

Kirill
23.05.2018
11:27:45
Спасибо за ответ, смущает скорость) Очень нужно быстрее. Видимо больше компьютеров мой вариант? Есть еще возможность агрегировать данные, как вы считает стоит оно того или нет?
Вы читаете 47GB данных, можно раскидать данные по машинам (дорого) или сделать материализованное представление поверх таблицы с движком SummingMergeTree и все будет быстро

Выскочили ошибки в репликации в мониторинге, мониторю селектом из документации. Тупо пересоздал таблицу, данные с другой реплики скачались, ошибки ушли, всем спасибо :)
Вообще, КХ сам понимает что что-то не так (в вашем случае похоже что они уже есть в другом куске) и выкачивает нужный кусок с другой реплики, собственно в логах он вам об этом и написал

Kirill
23.05.2018
11:34:01
https://clickhouse.yandex/docs/ru/single/#systemreplicas
Еще в system.replication_queue стоит смотреть - если растет то репликация не идет и там же будут ошибки

Alexey
23.05.2018
11:34:55
репликация при этом шла и все было ок

Google
Alexey
23.05.2018
11:35:25
вьюха была мелкая, быстрее было пересоздать ее

Anton
23.05.2018
12:01:48
День добрый, а не планируется ли поддержка битовых операторов, а не отдельных специфичных функций? например & и | как аналог функций bitAnd(A, B), bitOr(A, B). Дело в том, что наша уютная ОРМочка генерирует SQL код с использованием операторов

Kirill
23.05.2018
12:18:49
Здравствуйте! Во всех, найденных мной, гайдах идёт импорт данных из локального csv/tsv. Может ли клик ходить на s3 ?

Kirill
23.05.2018
12:34:53
Sergey
23.05.2018
13:54:33
Добрый день, можете подсказать, как вставить кусок данных в MergeTree если данные относятся к разным месяцам?

Кусок обязательно придется бить на месяца?

Kirill
23.05.2018
13:58:04
Нет, не обязательно

Sergey
23.05.2018
14:00:35
Code: 0, Message: Logical error: part spans more than one month.

Ivan
23.05.2018
14:02:52
max_replica_delay_for_distributed_queries А как считается это отставание? По последней записи?

Kirill
23.05.2018
14:03:43
Code: 0, Message: Logical error: part spans more than one month.
А версия сервера какая? Просто у меня не воспроизводится

Sergey
23.05.2018
14:03:51
ClickHouse server version 1.1.54380.

Alexey
23.05.2018
14:05:46
как-то вы странно вставляете

покажете запрос? в каком формате?

Kirill
23.05.2018
14:06:48
ClickHouse server version 1.1.54380.
kshvakov :) create table test_logical(date Date, Value String) engine MergeTree partition by date order by date; CREATE TABLE test_logical ( date Date, Value String ) ENGINE = MergeTree PARTITION BY date ORDER BY date Ok. 0 rows in set. Elapsed: 0.009 sec. kshvakov :) kshvakov :) insert into test_logical values ('2018-01-01', 'A'), ('2018-02-02', 'B') INSERT INTO test_logical VALUES Ok. 2 rows in set. Elapsed: 0.012 sec. kshvakov :) select * from test_logical SELECT * FROM test_logical ┌───────date─┬─Value─┐ │ 2018-02-02 │ B │ └────────────┴───────┘ ┌───────date─┬─Value─┐ │ 2018-01-01 │ A │ └────────────┴───────┘ 2 rows in set. Elapsed: 0.006 sec.

Alexey
23.05.2018
14:07:15
может быть в бинарном формате?

Alexey
23.05.2018
14:08:58
и что в одном инсерте нельзя вставить разные месяцы

ерунда, всё вставляется

Kirill
23.05.2018
14:09:42
скорее всего партиция там не по дням, а месяцам
Легко kshvakov :) create table test_logical(date Date, Value String) engine MergeTree partition by toYYYYMM(date) order by date; CREATE TABLE test_logical ( date Date, Value String ) ENGINE = MergeTree PARTITION BY toYYYYMM(date) ORDER BY date Ok. 0 rows in set. Elapsed: 0.003 sec. kshvakov :) insert into test_logical values ('2018-01-01', 'A'), ('2018-02-02', 'B') INSERT INTO test_logical VALUES Ok. 2 rows in set. Elapsed: 0.007 sec. kshvakov :) select partition from system.parts where table = 'test_logical' and active SELECT partition FROM system.parts WHERE (table = 'test_logical') AND active ┌─partition─┐ │ 201801 │ │ 201802 │ └───────────┘ 2 rows in set. Elapsed: 0.001 sec.

Google
Kirill
23.05.2018
14:10:12
нужен пример для воспроизведения чтоб, если что, можно было пофиксить

Alexey
23.05.2018
14:12:19
такое ощущение, что речь идет про FORMAT Native

кажется, что только тут данные не парсятся построчно

Sergey
23.05.2018
14:26:38
Да, изменил формат и все пошло

Спасибо

Kirill
23.05.2018
14:26:58
@lechie можете пример скинуть чтоб можно было воспроизвести ?

Sergey
23.05.2018
14:28:03
Попробуйте unix timestamp писать в поле date Date

Kirill
23.05.2018
14:32:21
Попробуйте unix timestamp писать в поле date Date
На более новых версиях воспроизводиться?

Alexey
23.05.2018
14:41:39
Попробуйте unix timestamp писать в поле date Date
Кликхаус не занимается приведением типов, в Date надо вставлять дату, timestamp можно в DateTime

toDate(1527086416) вот так можно вставлять

Sergey
23.05.2018
14:46:12
github.com/mailru/go-clickhouse

Alexey
23.05.2018
14:53:25
так эта ошибка похоже от драйвера, а не от КХ

сам КХ вставляет timestamp в Date, правда получается не очень: :) insert into test_date values(1527086416) INSERT INTO test_date VALUES Ok. 1 rows in set. Elapsed: 0.005 sec. :) select * from test_date; SELECT * FROM test_date ┌───────date─┐ │ 2057-10-31 │ └────────────┘ 1 rows in set. Elapsed: 0.480 sec.

Denis
23.05.2018
14:59:06
1527086416 -- это число дней с 1970 года, а не таймштемп. select toDate (0+365) ┌─toDate(plus(0, 365))─┐ │ 1971-01-01 │ └──────────────────────┘

Sergey
23.05.2018
15:02:13
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/MergeTree/MergeTreeDataWriter.cpp @ 152 строка та самая ошибка

Которая вылетала, похоже

Kirill
23.05.2018
15:08:55
- 404 на https://clickhouse.yandex/docs/ru/docs/ru/operations/settings/settings/#format_csv_delimiter баг или фича ?) - В релиз 1.1.54381 format_csv_delimiter не включен ?

Vladimir
23.05.2018
15:08:58
Господа, а как мне такой batch одним запросом выполнить? drop table test_tbl; CREATE TABLE test_tbl ( a String, b String, c String ) ENGINE=Memory; INSERT INTO test_tbl(a, b, c) FORMAT TSV a1 b1 c1 a2\ttab b2 c2 a3 b3 c3 INSERT INTO test_tbl(a, b, c) FORMAT TSV a4 b4 c4 a5\ttab b5 c5 a6 b6 c6

Google
Vladimir
23.05.2018
15:09:19
localhost :) localhost :) INSERT INTO test_tbl(a, b, c) FORMAT TSV :-] a1 b1 c1 :-] a2\ttab b2 c2 :-] a3 b3 c3 :-] :-] INSERT INTO test_tbl(a, b, c) FORMAT TSV :-] a4 b4 c4 :-] a5\ttab b5 c5 :-] a6 b6 c6 :-] :-] ; INSERT INTO test_tbl (a, b, c) FORMAT TSV Exception on client: Code: 27. DB::Exception: Cannot parse input: expected \t before: \na4\tb4\tc4\na5\\ttab\tb5\tc5\na6\tb6\tc6\n;: (at row 4) Row 3: Column 0, name: a, type: String, parsed text: "a3" Column 1, name: b, type: String, parsed text: "b3" Column 2, name: c, type: String, parsed text: "c3" Row 4: Column 0, name: a, type: String, parsed text: "INSERT INTO test_tbl(a, b, c) FORMAT TSV" ERROR: Line feed found where tab is expected. It's like your file has less columns than expected. And if your file have right number of columns, maybe it have unescaped backslash in value before tab, which cause tab has escaped.

Denis
23.05.2018
15:11:17
Alexey
23.05.2018
15:11:23
c 1970 всего 48 лет прошло, по 365 дней...

Denis
23.05.2018
15:12:07
c 1970 всего 48 лет прошло, по 365 дней...
просто КХ такие даты не умеет, обрезает по максимальной, но это число дней для типа Date

Dima
23.05.2018
15:12:28
Привет Подскажите как можно сделать следущее. Есть таблица вида: Name|Timestamp |Event A | 2018-05-01 | 1 A | 2018-06-01| 2 A | 2018-07-02 | 1 A | 2018-07-07| 2 A | 2018-08-01 | 1 B | 2018-05-02 | 1 B | 2018-06-15| 2 Требуется достать растояние между последовательными event 1 и 2 для каждого Name. В итоге должно выйти: Name|During A |30 A |5 B |43

Alexey
23.05.2018
15:12:50
просто КХ такие даты не умеет, обрезает по максимальной, но это число дней для типа Date
Да кто же спорит то, я выше об этом же писал, что КХ не умеет в Date timestamp вставлять

Vladimir
23.05.2018
15:14:08
Скрипт, который консоль клиента копирую, если что. https://pastebin.com/cUfKy44e

Denis
23.05.2018
15:14:16
Да кто же спорит то, я выше об этом же писал, что КХ не умеет в Date timestamp вставлять
что значит не умеет? Каким образом КХ может догадаться что секунды или часы, если аргумент это число дней.

Alexey
23.05.2018
15:15:23
я выше писал, что КХ не занимается приведением типов, что в Date можно вставлять только дату, но ошибки не выдает, если вставить timestamp, вот что я имел ввиду

я вас понял!

Скрипт, который консоль клиента копирую, если что. https://pastebin.com/cUfKy44e
:) INSERT INTO test_tbl(a, b, c) FORMAT TSV :-] a1 b1 c1 :-] a2\ttab b2 c2 :-] a3 b3 c3 INSERT INTO test_tbl (a, b, c) FORMAT TSV Ok. 3 rows in set. Elapsed: 0.004 sec.

Vladimir
23.05.2018
15:19:56
А две инструкции друг за другом одним батчем выполнить?

*Два INSERT'а.

Alexey
23.05.2018
15:20:17
нет, по очереди

Denis
23.05.2018
15:22:01
А две инструкции друг за другом одним батчем выполнить?
cat file.tsv|clickhouse-client -q "INSERT INTO test_tbl(a, b, c) FORMAT TSV"

Vladimir
23.05.2018
15:22:44
А если я так хочу? clickhouse-client < clickhouse.sql

cat clickhouse.sql drop table test_tbl; CREATE TABLE test_tbl ( a String, b String, c String ) ENGINE=Memory; INSERT INTO test_tbl(a, b, c) FORMAT TSV a1 b1 c1 a2\ttab b2 c2 a3 b3 c3 INSERT INTO test_tbl(a, b, c) FORMAT TSV a4 b4 c4 a5\ttab b5 c5 a6 b6 c6

Alexey
23.05.2018
15:23:12
clickhouse-client -n

Vladimir
23.05.2018
15:24:27
clickhouse-client -n < clickhouse.sql Code: 62. DB::Exception: Syntax error: failed at position 1 (line 1, col 1): a2\ttab b2 c2

Google
Alexey
23.05.2018
15:25:05
только insert'ы нормально сделайте, зачем терять время и изгаляться, если в values спокойно запихнуть можно

Denis
23.05.2018
15:25:06
Vladimir
23.05.2018
15:25:33
А INSERT'ы с такой же скоростью работать будут?

Alexey
23.05.2018
15:25:50
в этом примере да

Vladimir
23.05.2018
15:26:13
А если batch over 100500 записей?

Alexey
23.05.2018
15:27:00
положите эти батчи в отдельные файлы и вставляйте на здоровье

в формате TSV

Vladimir
23.05.2018
15:27:45
Второй вопрос. JDBC-дрова поддерживают INSERT в TSV-формате?

Alexey
23.05.2018
15:29:00
не юзал, не подскажу

да, поддерживают

Vladimir
23.05.2018
15:34:09
А оно в потоковом режиме как Postgres умеет работать, или надо здоровенную строку подготавливать и её скармливать?

Alexey
23.05.2018
15:34:25
не юзал, не подскажу

Denis
23.05.2018
15:35:11
Второй вопрос. JDBC-дрова поддерживают INSERT в TSV-формате?
нет, КХ по большому счету без разницы (tsv или insert ()()()()(.....) ), там парсер потока, он не ждет конца 500Мегабайтного insert

Kirill
23.05.2018
15:45:10
Nullable(DateTime) так и не парсится (

Vladimir
23.05.2018
15:45:43
То есть, я правильно понимаю, что addbatch может неявно отправлять данные для вставки на сервер?

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