
Pavel
11.04.2017
15:29:24
делаю вот такой запрос на буффер таблицу
SELECT dstAsn, sum(length) AS length FROM traffic_buffer GROUP BY dstAsn ORDER BY length DESC LIMIT 10
получаю вот такой бред:
┌─dstAsn─┬───────────────length─┐
│ 1502 │ 18351949192765233766 │
│ 265 │ 18094662927337839107 │
│ 1462 │ 17797213894484028375 │
│ 1213 │ 17666271323459185848 │
│ 1491 │ 17572761437988275181 │
│ 1238 │ 17314826234977620221 │
│ 1389 │ 17228713838271841746 │
│ 1164 │ 16975815251666726881 │

Google

Pavel
11.04.2017
15:30:00
а вот тот же запрос, на таблицу на диске
SELECT dstAsn, sum(length) AS length FROM traffic GROUP BY dstAsn ORDER BY length DESC LIMIT 10
│ 8473 │ 1948338049 │
│ 43513 │ 947373740 │
│ 16276 │ 421553898 │
│ 24940 │ 267350030 │
│ 60117 │ 220325712 │
и это верные данные, судя по порядку величин в буфер таблице есть странные подозрения на переполнение....
но в тоже время, если сделать выборку из обоих таблиц на предмет суммарного length по всей таблцие - все ок, значения идентичные и корректные.

Alexey
11.04.2017
15:35:39
Если попробовать поискать проблемные строки с большими или отрицательными значениями?

Pavel
11.04.2017
15:36:41
все визуально ок...
SELECT min(length)
FROM traffic_buffer
┌─min(length)─┐
│ 64 │
└─────────────┘
SELECT max(length)
FROM traffic
↙️ Progress: 22.36 million rows, 178.90 MB (220.23 million rows/s., 1.76 GB/s.) ┌─max(length)─┐
│ 1522 │
└─────────────┘

Alexey
11.04.2017
15:37:14
max?

Pavel
11.04.2017
15:37:26
тоже самое в обоих таблицах, что в персистент, что в буферной
столбец типа: length UInt64

Alexey
11.04.2017
15:40:17
Насколько часто сбрасывается буфер? Исчезает ли проблема, если форсировать сброс буфера (OPTIMIZE TABLE)?

Google

Alex
11.04.2017
15:40:43
а если SELECT max(length) FROM traffic_buffer?

Pavel
11.04.2017
15:41:00
неа, сделал оптимайз на все таблицы, не помогло
сброс каждые 10000 записей, примерно раз в 10 секунд
уже проверил, максимум - 1522.

Alexey
11.04.2017
15:41:26
То есть, проблема проявляется, даже если буфер пуст?

Pavel
11.04.2017
15:41:32
угу :(
я могу остановить поток

Alexey
11.04.2017
15:42:03
Одинаковая ли структура таблицы buffer и таблицы, в которую сбрасывается?

Pavel
11.04.2017
15:42:12
одинаковая
хыыы, остановил залив данных - баг пропал
как только запустил - через секунду снова воспроизвелся.
SELECT
dstAsn,
max(length) AS length
FROM traffic_buffer
GROUP BY dstAsn
ORDER BY length DESC
LIMIT 10
↙️ Progress: 25.66 million rows, 307.87 MB (251.96 million rows/s., 3.02 GB/s.) ┌─dstAsn─┬─length─┐
│ 196798 │ 1522 │
│ 197082 │ 1522 │
│ 13147 │ 1522 │
│ 46433 │ 1522 │
и через секунду (запустил поток)
SELECT
dstAsn,
max(length) AS length
FROM traffic_buffer
GROUP BY dstAsn
ORDER BY length DESC
LIMIT 10
→ Progress: 16.71 million rows, 200.46 MB (163.71 million rows/s., 1.96 GB/s.) ┌─dstAsn─┬───────────length─┐
│ 1522 │ 1693771892837325 │
│ 142 │ 872088814537677 │
│ 0 │ 871680792791368 │
│ 162 │ 871672202709965 │
│ 64 │ 871672202709965 │

Alexey
11.04.2017
15:46:55
Выполнялся ли ALTER таблиц?

Pavel
11.04.2017
15:47:13
ниразу
вчера дропал и создавал заново, с небольшими изменениями схемы.

Alexey
11.04.2017
15:51:45
Проблема проявляется на одном сервере кластера или на всех?

Pavel
11.04.2017
15:52:18
кластера нету, установка на одной машине
машина с ECC, model name : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz

Google

Alex
11.04.2017
15:54:46
А какие были изменения схемы?


Pavel
11.04.2017
15:57:21
добавил поле packetDateTime DateTime
схема выглядит вот так
SHOW CREATE TABLE traffic
┌─statement────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE fastnetmon.traffic ( packetDate Date, packetDateTime DateTime, source Int8, sampleRatio UInt32, srcIp UInt32, dstIp UInt32, srcAsn UInt32, dstAsn UInt32, ipProtocolVersion UInt8, ttl UInt8, sourcePort UInt16, destinationPort UInt16, protocol UInt32, length UInt64, numberOfPackets UInt64, flags UInt8, ipFragmented Int8, ipDontFragment Int8, packetPayloadLength Int32, packetPayloadFullLength UInt32, packetDirection Int8) ENGINE = MergeTree(packetDate, (srcIp, dstIp, packetDate), 8192) │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
→ Progress: 1.00 rows, 16.00 B (284.25 rows/s., 4.55 KB/s.)
1 rows in set. Elapsed: 0.004 sec.
:) show create table traffic_buffer;
SHOW CREATE TABLE traffic_buffer
┌─statement─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE fastnetmon.traffic_buffer ( packetDate Date, packetDateTime DateTime, source Int8, sampleRatio UInt32, srcIp UInt32, dstIp UInt32, srcAsn UInt32, dstAsn UInt32, ipProtocolVersion UInt8, ttl UInt8, sourcePort UInt16, destinationPort UInt16, protocol UInt32, length UInt64, numberOfPackets UInt64, flags UInt8, ipFragmented Int8, ipDontFragment Int8, packetPayloadLength Int32, packetPayloadFullLength UInt32, packetDirection Int8) ENGINE = Buffer(\'fastnetmon\', \'traffic\', 16, 10, 100, 10000, 1000000, 10000000, 100000000) │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
↘️ Progress: 1.00 rows, 16.00 B (1.14 thousand rows/s., 18.20 KB/s.)
1 rows in set. Elapsed: 0.001 sec.


Alex
11.04.2017
17:38:27
Получилось повторить. Да, баг при агрегациях из Buffer-таблицы.

Andrey
11.04.2017
17:48:11

Andrey
11.04.2017
17:49:12

Andrey
11.04.2017
17:50:46

Andrey
11.04.2017
17:51:40

Andrey
11.04.2017
17:52:57

Andrey
11.04.2017
17:56:07
Ок. Спасибо, буду иметь в виду. Есть proxmox в зоопарке у меня, правда не на zfs.

Alex
11.04.2017
19:34:22

Alexey
11.04.2017
19:42:19
https://github.com/yandex/clickhouse-odbc
- отдельный репозиторий для ODBC драйвера.
Сейчас в активной разработке. Сделана сборка под Windows.
В основном, ещё не готово для использования.
Libreoffice работает, Excel - нет. Tableau Desktop - подключается, показывает список таблиц, но дальше ничего не работает.
Можете пробовать, если вы - разработчик.

Pavel
11.04.2017
19:55:44
Огромное спасибо!;)) вы лучшие!

Игорь
11.04.2017
19:57:29
?

Konstantin
12.04.2017
09:50:44
sFFFFVT6GTVVFTVFVFFFTVVFVFFTVFTVFVFVFTF55FTV55VF5VTTFV55VF5VFTF55V5FTTFTT5F

Виктор
12.04.2017
09:52:53
Кот. Или ребенок.

Konstantin
12.04.2017
10:06:53
Извиняюсь - рюкзак :) Испраление багов за рулем

Edouard
12.04.2017
10:26:01
Добрый день.
ClickHouse и Grafana

Google

Edouard
12.04.2017
10:26:42
datasource plugin взял с git, не с grafana-cli

Roman
12.04.2017
10:39:34

Edouard
12.04.2017
10:43:32
Судя по консоли проблема в "DB::Exception: Illegal types of arguments (Date, DateTime) of function greaterOrEquals"

Igor
12.04.2017
10:44:03
toDateTime(packetDate)?

Roman
12.04.2017
10:52:39
Чтобы иметь возможность строить графики распределенные во времени, таблица должна соержать Date и DateTime столбцы
Вы так же можете проигнорировать это требование, но тогда макросы могут неверно работать и лучше их не использовать

Edouard
12.04.2017
10:56:56
@hagen1778 @iamigor Благодарю вас.

Kirill
12.04.2017
11:55:38
Всем привет, подскажите что почитать в помощь по организации real-time импорта в CH? Собираюсь писать в csv /1s и вот не могу найти практики по организации такого импорта, то ли тулинг какой нужен, то ли из коробки есть, то ли все руками такое пишут..

Andrey
12.04.2017
13:01:15

Kirill
12.04.2017
13:22:43
Посмотрите движок таблиц типа Buffer
Спасибо, посмотрел, у меня несколько о другом вопрос был – у меня есть сервис, который пишет csv для импорта в CH, батчи по 100mb / sec к примеру. Вот я смотрю в поисках тулинга или какого-то right way) у меня пока две идеи – непосредственно писать импорт сразу после создания каждого батча (не очень, т.к аффектит сервис процессинга данных), либо писать еще один велосипед, который смотрит на место где лежат батчи и импортирует их в CH.

Maksim
12.04.2017
13:53:28
Подскажите пожалуйста как выгрузить создание схемы (таблицы) в clickhouse-client ?
cat "$table"_schema.sql | clickhouse-client —user=$DB_USER —password=$DB_PASSWORD —database=$DB_DATABASE —query="CREATE TABLE $table"
в файлике корректный для кх запрос

Igor
12.04.2017
13:54:17
а зачем --query передаете-то?
это в sql-файлике должно быть скорее
CREATE TABLE ... (
...
) ENGINE = ...;

Maksim
12.04.2017
13:55:08
если не передавать то все ок будет ?
да это в файлике

Igor
12.04.2017
13:55:32
ну. а --query "CREATE TABLE ..." тогда зачем? :)

Maksim
12.04.2017
13:58:28
хз)
а подскажите его как выгрузить данные через clickhouse-client с декомпрессией ?

Google

Maksim
12.04.2017
14:10:24
так могу ?
cat "$table"_data.native | clickhouse-client —user=$DB_USER —password=$DB_PASSWORD —database=$DB_DATABASE —decompress=1 —query="INSERT INTO $TABLE FORMAT Native"
говорит нету такой опции.. тогда как выполнит декомпресию ?
было бы хорошо если бы объеденили компрессор и декомпрессор внутрь клиента. опцию добавляем получаем компрессионный файл или декомпрессионый

Igor
12.04.2017
14:47:59

Maksim
12.04.2017
14:48:16

Igor
12.04.2017
14:48:25
clickhouse-client -q "..." | clickhouse-compressor > data.compressed

Maksim
12.04.2017
14:48:44
у меня вообще сервак лег от выгрузки компрессионых данных в 130 млн строк

Igor
12.04.2017
14:49:00
только наоборот

Maksim
12.04.2017
14:49:08
это помоему команда на выгрузку данных. а я пытаюсь загрузить в кх уже копрессионные данные

Igor
12.04.2017
14:49:24
у compressor'a есть флаг для декомпресии?

Maksim
12.04.2017
14:50:02

Alex
12.04.2017
14:50:11
Да, -d. Но файл нужно всё равно на stdin подавать

Igor
12.04.2017
14:50:12
--help

Alex
12.04.2017
14:52:38
Всё верно, я к тому, что clickhouse-compressor -d data.compressed не сработает.

Igor
12.04.2017
14:52:54
а, фух :)