@clickhouse_ru

Страница 431 из 723
Alexey
21.02.2018
21:14:52
нам надо будет гдето 5к запросов в секунду нагрузочное тестирование пройти
5000 SELECT-ов в секунду может не выдержать. Для сравнения - эта величина примерно такого же порядка как нагрузка на главную страницу Яндекса.

И значит задача - посмотреть, почему есть столько запросов. Если среди них много однородных, то их можно объединить вместе в один запрос...

Привет, подскажите, пожалуйста, как данные кликхауса перенести с одной машины на другую. Я могу просто остановить сервак и сделать scp /var/lib/clickhouse?
Да, вы можете остановить сервер и просто перенести данные. Но нужно иметь ввиду разные нюансы: - убедиться, что файлы скопированы с правильными правами доступа; - если переносится Replicated таблица, то проще создать новую реплику, а не переносить вручную.

получаем ошибку Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 8 (line 2, col 1): {"date":"2018-02-21","aff_id":"b0a8a25f-5d66-44f3-9169-bb7426dc15f7"}{"date":"2018-02-21","aff_id":"d692a059-2b9a-4c56-87e3-f201a0836125"}. Unrecognized token, e.what() = DB::Exception
Это сообщение говорит о том, что вы отправили данные без запроса. А сервер ожидает сначала запрос INSERT INTO table FORMAT JSONEachRow, а потом (например, на следующей строке) уже данные. При работе с curl не забудьте указывать --data-binary. (для JSON вряд ли важно, но всё-равно есть смысл).

Google
Alexey
21.02.2018
21:27:02
в днях с начала unixtime а ты туда строку кладешь
Как раз правильно в YYYY-MM-DD. Если это JSON, то в двойных кавычках, если VALUES - то в одинарных, если TSV - то без кавычек, а если CSV - то как больше нравится.

21.02.2018
21:28:23
спасибо!

Roman
21.02.2018
21:32:01
периодически не можем вставить данные с ошибкой 2018.02.21 23:31:09.799732 [ 20 ] <Error> executeQuery: Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: I, e.what() = DB::Exception (from 193.187.80.17:46838) (in query: INSERT INTO ipfix (EventDate,ipVersion,flowStartSysUpTime,flowEndSysUpTime,packetDeltaCount,octetDeltaCount,sourceTransportPort,destinationTransportPort,protocolIdentifier,sourceIPv4Address,destinationIPv4Address) VALUES), Stack trace: 0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x3317996] 1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x131a3df] 2. clickhouse-server(DB::evaluateConstantExpression(std::shared_ptr<DB::IAST> const&, DB::Context const&)+0xd16) [0x2bcf126]

буду рад хоть какой-нибудь подсказке которая поможет - идей нет

Alexey
21.02.2018
21:34:00
периодически не можем вставить данные с ошибкой 2018.02.21 23:31:09.799732 [ 20 ] <Error> executeQuery: Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: I, e.what() = DB::Exception (from 193.187.80.17:46838) (in query: INSERT INTO ipfix (EventDate,ipVersion,flowStartSysUpTime,flowEndSysUpTime,packetDeltaCount,octetDeltaCount,sourceTransportPort,destinationTransportPort,protocolIdentifier,sourceIPv4Address,destinationIPv4Address) VALUES), Stack trace: 0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x3317996] 1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x131a3df] 2. clickhouse-server(DB::evaluateConstantExpression(std::shared_ptr<DB::IAST> const&, DB::Context const&)+0xd16) [0x2bcf126]
Это связано с тем, что данные для вставки записаны не в точно ожидаемом формате. Тогда ClickHouse пытается интерпретировать указанное значение как произвольное выражение и затем преобразовать его к нужному типу данных. Чтобы увидеть более явно, где возникает проблема, выставите настройку input_format_values_interpret_expressions в ноль.

Roman
21.02.2018
21:36:20
Ок. Спасибо. попробую

Alexander
21.02.2018
21:40:16
insert into clicks_test (date, aff_id) values ("2018-02-21", "b0a8a25f-5d66-44f3-9169-bb7426dc15f7"); INSERT INTO clicks_test (date, aff_id) VALUES Exception on client: Code: 36. DB::Exception: Element of set in IN or VALUES is not a constant expression: 2018-02-21

а это вставилось: insert into clicks_test (date, aff_id) values ('2018-02-21', 'b0a8a25f-5d66-44f3-9169-bb7426dc15f7');

values с двойными кавычками не проходит, а с одинарными проходит

Roman
21.02.2018
21:44:24
Смущыет что проблема "плавяющая" может вставить 500000 записей без проблем и потом может падать

Направление понял, будем смотреть.

Google
Илья
22.02.2018
04:58:01
Доброе утро. Люди работающие с catboost (не нашел отдельного "живого" паблика :) ) подскажите пожалуйста. Насколько реально и целесообразно учить catboost парсить логи ?? Есть логи, где состав полей постоянно меняется, конечно же на perl уже написан рабочий быстрый парсер, но появилась идей проверить как сеть может справиться с этой задачей? Т.е. на вход строки лога сырые, на выход json, или любая коллекция Ключ=Значение. Может быть такое что catboost будет это делать достаточно быстро?

А и еще, я вообще не шарю в нейросетях, машинном обучении и т.д. :(

Собственно поэтому и спрашиваю :)

Stas
22.02.2018
05:25:32
А и еще, я вообще не шарю в нейросетях, машинном обучении и т.д. :(
Тогда стоит сначала почитать как это работает и особенно пример с Титаником и выжившими

Илья
22.02.2018
05:29:06
Т.к. стало интересно уже начал изучать данную тему. Но хотелось бы узнать мнение уже знающих людей именно по описанному сценарию. Просто если удастся добиться каких то приемлемых результатов (по мнению знающих) то начну данный сценарий реализовывать для проверки, со всеми вытекающими :)

Илья
22.02.2018
05:40:49
Это понятно что обучать нужно реальных логах.

Логи выглядят следующим образом

Т.е. в зависимости от типа событий состав полей разный бывает

Tima
22.02.2018
05:48:55
Т.е. в зависимости от типа событий состав полей разный бывает
Можно посоветовать лишь что-то типа key-value базы данных (redis, cassandra или даже mongodb), куда писать распарсеные из файла данные. И дальше уже имея более гибкий и быстрый доступ к данным - заливать в КХ или куда ещё нужные поля в нужном формате

Ваша задача вообще никаким боком к анализу данных. У нас на работе тоже пытались на стороне пользователя js-ом парсить данные, от нас же, через сети Хопфилда?

Илья
22.02.2018
05:54:21
Ясно) Спасибо

Stas
22.02.2018
05:57:33
Далее делаем широкую таблицу на лету и скармливаем её Catbost’у

Tima
22.02.2018
06:02:14
Далее делаем широкую таблицу на лету и скармливаем её Catbost’у
Может получится слишком широкая таблица. Я тоже так пытался делать, парсил слишком разные логи. И дошел до таблицы в 4.3к колонок. И перестал маятся фигнёю и сделал проще (как описал выше)

Т.е. в монге храню неструктуированные данные, а в базах типа мускуля и КХ - структуированные типизированные данные

Tima
22.02.2018
06:08:22
широкая таблица - не проблема для ch, если у вас есть памяти много
При почти 5 тысяч колонок - проблема. Даже вставка батча 20к * 5 к - работает не очень хорошо. Фоновые мерджи просто убивают систему. И дело явно не в кол-ве строк в батче, а в кол-ве столбцов

Stas
22.02.2018
06:09:02
Google
Tima
22.02.2018
06:09:49
я же подчеркнул -широкая таблица виртуальная, в кх хранится узкая а широкая строится в момент запроса через CASE/IF
Я подчеркивание не увидел. Вообщем не так важно, лишь бы работало. Хотя за такое в институте долго ругали

Stas
22.02.2018
06:11:20
Я подчеркивание не увидел. Вообщем не так важно, лишь бы работало. Хотя за такое в институте долго ругали
когда количество полей данных может менятся другого выхода я не вижу, к сожалению

Tima
22.02.2018
06:19:33
когда количество полей данных может менятся другого выхода я не вижу, к сожалению
Ну как же нет, а монго? В авито исполтзуют как промежуточное хранилище. А у них в аналитике больше 100 Тб

Правда в вертике, но всё же

Александр
22.02.2018
06:40:01
У нас тоже монга. Вот буквально вчера строил индекс и увидел кол-во документов. Index Build (background) Index Build (background): 917813414/992020960 92% Вполне отлично живем на монге :)

Мы из нее берем данные и складываем в более узкую таблицу в Clickhouse и по ней агрегируем данные

Roman
22.02.2018
07:51:02
как сделать input_format_values_interpret_expressions=0 ? В инструкии не нашел как-то.

Kirill
22.02.2018
07:58:19
как сделать input_format_values_interpret_expressions=0 ? В инструкии не нашел как-то.
Ровно также как и другие настройки. Самое простое указать в профиле пользователя

Roman
22.02.2018
08:22:13
такое ощущение что в какой-то момент съезжает блок вставки значений в CH. Проверили запрос - формируется корректно, но ошибка вот такая: 2018/02/22 10:19:46 Error: %!(EXTRA *clickhouse.DbError=clickhouse error: [27] DB::Exception: Cannot parse input: expected , before: IPv4StringToNum(\'94.100.180.55\'),IPv4StringToNum(\'5.59.45.214\')),(\'2018-02-22\',4,538449350,538449350,1,52,443,50604,6,IPv4StringToNum(\'87.250.251.60\'),IPv4Strin: (at row 1)

Roman
22.02.2018
08:29:37
мы принимаем поток IPFIX на свой обработчик, формируем на нем пачки по 500000 записей и вставляем в CH. Сейчас будем проверять источник данных.

формируем запрос библиотекой github.com/roistat/go-clickhouse

Tima
22.02.2018
08:32:23
такое ощущение что в какой-то момент съезжает блок вставки значений в CH. Проверили запрос - формируется корректно, но ошибка вот такая: 2018/02/22 10:19:46 Error: %!(EXTRA *clickhouse.DbError=clickhouse error: [27] DB::Exception: Cannot parse input: expected , before: IPv4StringToNum(\'94.100.180.55\'),IPv4StringToNum(\'5.59.45.214\')),(\'2018-02-22\',4,538449350,538449350,1,52,443,50604,6,IPv4StringToNum(\'87.250.251.60\'),IPv4Strin: (at row 1)
Такое бывает когда в исходных данных нет значения, а коде формирования батча не учитывается это и не проставляются дефолтные значения для каждого из типов. Например в данных нет даты, тогда в строку для КХ нужно ставить '0000-00-00', иначе при вставке столбцы "поедут"

Egor
22.02.2018
08:32:45
пакеты размером около 30-40кб, а буфер мог вмещать всегшо 8кб

и пакет резался.

Aleksandr
22.02.2018
09:03:11
Приветствую. А тут можно задавать вопросы по Tabix? Есть одна проблема, может кто в курсе как ее устранить.

Google
Aleksandr
22.02.2018
09:24:43
не правильное отображение поля Int64 , есть поле в котором идет так: Значение записаное - 1519274696510074922 Значение которое отображается - 1519274696510074880 Значение которое копируется - 1519274696510075000 Версия табикса самая последня - 18.02.2 Использую build версию которая

в одной из версий данный баг был пофикшен, если я не ошибаюсь это была бета версия 17.10.3

не давно обновился до 18.02.2 и снова появилась ошибка

Alexey
22.02.2018
09:32:30
К слову, я тут сейчас смотрю в select * from system.parts и вижу там популярную дату '1970-01-01 86:28:15'. Это нормально?)

Александр
22.02.2018
09:32:53
Всем привет. Есть вопрос по визуализации запроса к КХ в Grafana - потратил кучу времени, не могу найти решение.

Не получается вывести график с группировкой по дате. Запрос возвращает данные такого вида: ┌──────────t─┬─ClickY─┬─GlickG─┐ │ 2018-01-01 │ 48458 │ 195892 │ │ 2018-01-02 │ 51356 │ 205198 │ │ 2018-01-03 │ 55770 │ 221476 │ │ 2018-01-04 │ 68547 │ 223475 │

Jen
22.02.2018
09:34:34
и в чем проблема?

графана с полпинка заводится :)

правда ей две колонки типа Date и DateTime нужны, если не ошибаюсь

Александр
22.02.2018
09:36:15
правда ей две колонки типа Date и DateTime нужны, если не ошибаюсь
Вот с этим как раз проблема - у меня есть только Date, не пойму, как ей подсунуть Date в виде DateTime

Jen
22.02.2018
09:36:26
toDateTime?

SELECT (intDiv(toUInt32(toStartOfMinute(date)), 2) * 2) * 1000 as t, sum(uplink) as SocialNets_uplink, sum(downlink) as SocialNets_downlink FROM ipdr_day.grafana_services WHERE month BETWEEN toDate(1509035744) AND toDate(1509042234) AND toStartOfMinute(date) BETWEEN toDateTime(1509035744) AND toDateTime(1509042234) and service = 'SocialNets' GROUP BY t ORDER BY t такой запрос у меня генерирует графана, можно нечто подобное самому сообразить без встроенных макросов, только в нужное место вставить toDateTime

Александр
22.02.2018
09:38:41
спасибо, сейчас попробую

Jen
22.02.2018
09:39:07
макросами удобно пользоваться, когда Date и DateTime в разных колонках есть



Александр
22.02.2018
09:40:42
toDateTime() спас меня - не находил эту функцию в доке=)

точнее, она там есть в примерах, но не в списке функций

спасибо!))

Jen
22.02.2018
09:40:56
нзч :)

Александр
22.02.2018
09:41:02
завелось

Google
Артемий
22.02.2018
09:48:40
Это нулевая дата по UTC +N преобразуется в такой вид

Maksim
22.02.2018
10:04:06
Привет всем

Дано: 1. Старый кластер клика обновляется до актуальной версии 2. добавляется новая машина 3. попытка выполнить креейт тейбл взятый со старой тачки ..... ENGINE = ReplicatedMergeTree('/clickhouse/tables/01/gm_vip_buy', '{replica}', EventDate, intHash32(gbId), (gbId, tWhen), 8192) Received exception from server (version 1.1.54343): Code: 36. DB::Exception: Received from ............:9000. DB::Exception: Sampling expression must be present in the primary key. есть кто сталкивался?

Александр
22.02.2018
10:22:46
Я на память не помню как именно, но и в доке вроде бы нет еще это штуки, зато, есть на гитхабе где то в тестах. Не могу поискать, с телефона неудобно (

Maksim
22.02.2018
10:24:33
ща посмотрю

Александр
22.02.2018
10:28:24
Там что-то из серии ceate table ... order by ... sample by ...

Maksim
22.02.2018
10:32:42
ага https://github.com/yandex/ClickHouse/blob/fbef2a9816478899d3869e6c295727f24f925b2e/dbms/src/Parsers/ParserCreateQuery.h 190 /** ENGINE = name [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name = value, ...] */

спасибо

https://github.com/yandex/ClickHouse/blob/f1cfca40b8ee95807ac31ac4663ad75872e85239/docs/ru/table_engines/custom_partitioning_key.md во даже в доке есть

Roman
22.02.2018
10:38:33
Нашли причину - если не использовать функцию "IPv4StringToNum" в запросе к СH - все нормально вставляется. Реализовали свою имплементацию IPv4StringToNum на go. Все чудесно вставяется мультиинсертом.

Maksim
22.02.2018
11:27:55
Там что-то из серии ceate table ... order by ... sample by ...
переписал на новый лад, и ... ENGINE = ReplicatedMergeTree('/clickhouse/tables/01/gm_vip_buy', '{replica}') PARTITION BY EventDate ORDER BY intHash32(gbId) SAMPLE BY (gbId, tWhen) Received exception from server (version 1.1.54343): Code: 36. DB::Exception: Received from .....:9000. DB::Exception: Sampling expression must be present in the primary key.

существует ли способ обрать семплирование? в проблемных таблицах всеоавно его не применяем

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