@clickhouse_ru

Страница 503 из 723
Александр
18.04.2018
13:33:21
54370. 54378 не видел чейнджлог и не знаю пофиксили ее там или нет

M
18.04.2018
13:33:44
чейнджлог уже есть на 378

Sergey
18.04.2018
13:40:39
А повторю-ка я свой вопрос... Всем привет. А не подскажете, как мне сджоинить массивы внутри ячеек? Есть таблица, в ячейках которой имеются массивы с айдишниками (UInt32). Также есть таблица соответствия этих айдишников (UInt32) их неймам (String) Необходимо сделать так, чтобы в массивах ячеек были не ИДы, а соответствующие им строки.

papa
18.04.2018
13:42:38
1. разджойнить массивы, приджойнить табличку, сгруппировать обратно, 2. словариь + arrayMap

Google
Michal
18.04.2018
13:44:39
Это баг или фичер? Если фичер - как это регулировать?
ok, возможно что-то не так по стороне клиента. Перепроверю ещё раз.

Vitaly
18.04.2018
13:49:03
Всем привет! Кто может подсказать, как можно посмотреть список подключенных клиентов к clickhouse-server?

Alexey
18.04.2018
13:53:33
Show processlist?

Sergey
18.04.2018
14:06:02
1. разджойнить массивы, приджойнить табличку, сгруппировать обратно, 2. словариь + arrayMap
Разджоинить кажется очевидным. Тут, как бы, получается что и сджоинивать не надо было. И все-таки, интересно, как решить задачу в таком контексте. Есть в КХ подходящий инструмент?

Vitaly
18.04.2018
14:07:59
Show processlist?
нет, в system.metrics есть TCPConnection отражающее кол-во активных tcp соединений хочется посмотреть более дитальную информацию

Sergey
18.04.2018
14:14:58
Есть arrayMap(x -> dictGetString('dict', 'name', CAST(x AS Int64)), column)
Кирилл, спасибо за ответ, но у меня ещё вопрос =) Можно ли обойтись без словаря или реализовать нечто подобное? dictGetString((select id, name from map_table), 'name', id) И да, как в ТК делается форматирование кода?

Michal
18.04.2018
14:15:53
Kirill
18.04.2018
14:17:27
Хотя в result_rows в query_log тоже 131072. Через HTTP.
readonly мало на что влияет (или влияло) не должно было так зацепить, это можно как-то воспроизвести на определенной версии КХ?

Michal
18.04.2018
14:20:19
Да и число уж очень ровное. Если что паттерн запроса примерно такой SELECT col1, col2, ...sql colN FROM ( SELECT col1, arrayMap( ... , groupArray(col2)) as col2_all, groupArray(colN) as colN_all FROM ( SELECT col1,col2,...,colN FROM table ORDER BY time ) GROUP BY col1 ) ARRAY JOIN col2_all as col2, ..., colN_all as colN ORDER BY col3, col5

Google
Michal
18.04.2018
14:25:27
readonly мало на что влияет (или влияло) не должно было так зацепить, это можно как-то воспроизвести на определенной версии КХ?
Версия 1.1.54362. С воспроизводимостью - пока плохо, подозревал сначала какие-то ограничения профиля. После переключения профиля обычно начинает работать. Поэтому и грешил на readonly (на профиле readonly_unlimited не работало, после переключения на профиль unlimited начинало). Но если пользователю сразу дать профиль unlimited - то тоже не работает. При этом на нативном клиенте - все вроде как стабильно и предсказуемо.

Timur
18.04.2018
15:29:42
/stat@combot

Combot
18.04.2018
15:29:42
combot.org/chat/-1001080295593

combot.org/chat/-1001080295593

Harry
18.04.2018
15:54:08
Подскажите где копать - сделал материлизованное представление, при создании POPULATE залил данные, а вот дальше при добавлении данных в основную таблицу во вьюшку ничего не попадает.

Vladislav
18.04.2018
16:12:50
Привет. Подскажите, пожалуйста: выполняю INSERT INTO t1 SELECT * FROM t2, клиент крашится и пишет Aborted, по HTTP-интерфейсу то же самое. Куда посмотреть?

Anton
18.04.2018
16:37:30
Здравствуйте Подскажите пожалуйста как правильно создавать Materialized View над реплицируемыми таблицами так, чтобы он сам реплицировался? Достаточно ли создать View поверх каждой реплики с каким-нибудь локальным движком? Или движок View должен быть Replicated<...>?

Перечитал мануал, вроде разобрался, спасибо

Michal
18.04.2018
16:49:38
Приходите ещё :)

Egor
18.04.2018
16:55:17
Rubber duck debbuging как он есть :)

Alexey
18.04.2018
17:10:02
Вьюхи тоже replicated, на какую реплику прилетит инсерт, вставится во вьюху, и дальше по вьюхам тоже по репликации приедет

Если создадите обычные вьюхи, то в них не будут вставляться данные, только там, куда прилетает insert

Denis
18.04.2018
18:59:58
Проблема в случае (a, b) IN (SELECT (a, b) ...) Но можно писать так: (a, b) IN (SELECT a, b ...) (без заворачивания внутренностей подзапроса в кортеж) и всё будет Ок. Вариант с кортежем у нас есть для совместимости, но в этом случае что-то не соответствует.
я там в коментарии сегодня дописал, что я тупанул с туплом. И правильный ответ -- ошибка, проблема в том что в на v1.1.54378 10% случаев возращается -- [ОК. 0 строк], в 90% -- [ошибка].



Google
Alexey
18.04.2018
19:02:04
Да, уже выяснили - у нас баг.

На всякий случай:

SELECT (1, 2) IN (SELECT 1, 2); - в MySQL работает.

SELECT (1, 2) IN (SELECT (1, 2)); - в MySQL так нельзя.

В Postgres: SELECT (1, 2) IN (SELECT 1, 2); - Ok. SELECT (1, 2) IN (SELECT (1, 2)); - ERROR: subquery has too few columns Position: 15

Denis
18.04.2018
19:05:14
я бы сделал SELECT (1, 2) IN (SELECT 1, 2); -- OK SELECT (1, 2) IN (SELECT (1, 2)); -- ошибка типа SELECT ((1, 2)) IN (SELECT (1, 2)); -- OK tuple in tuple

Alexey
18.04.2018
19:06:05
Ок. (Только вместо ((1, 2)) приходится писать tuple((1, 2)) ).

Denis
18.04.2018
19:06:25
ну, тоже нормально.

Vitaliy
18.04.2018
19:11:00
так вроде у меня проблема 1в 1 с https://github.com/yandex/ClickHouse/issues/2146
Там немного другая проблема. Сможете прислать подробный пример, воспроизводящий ваш случай?

Daniel
18.04.2018
19:55:45
Добрый вечер! Воспринимает ли CH как-то во время вставки какой-нибудь escape symbol? То есть если у меня есть в тексте строки \t символ, и я импортирую tab separated, всё ломается. Как бы заэкранировать этот \t при подготовке файла к импорту, чтобы он корректно вставился в контексте строки?

Alexey
18.04.2018
19:59:47
Если у вас в строке есть символ "таб", то его надо записать в виде \t. Аналогично "перевод строки" - как \n, и самое важное, "бэкслеш" - как \\ (два бэкслеша).

Daniel
18.04.2018
20:02:37
Если у вас в строке есть символ "таб", то его надо записать в виде \t. Аналогично "перевод строки" - как \n, и самое важное, "бэкслеш" - как \\ (два бэкслеша).
Спасибо. То есть в импортируемом файле нужно просто заменить системные символы которые например не видны через vim на видимые, и они при импорте оценятся CH как надо и примут системный вид, то есть именно "таб", а не "\t"?

Александр
18.04.2018
20:11:01
Cannot read array from text: (at row 174) Could not print diagnostic info because two last rows aren't in buffer (rare case) а вот такое откуда вообще берется? оО Пишу данные в TSV формате.

Александр
18.04.2018
20:13:00
Пишу по строчке в отдельный файл, потом эти строчки в фоне мерджу в один файл с данными и скидываю в КХ, но он ругается, что какой то мусор в данных и т.п. Причем построчно такие данные вставляют корректно, а вот склеенные - нет.

Alexey
18.04.2018
20:13:19
Cannot read array from text: (at row 174) Could not print diagnostic info because two last rows aren't in buffer (rare case) а вот такое откуда вообще берется? оО Пишу данные в TSV формате.
Хочет написать подробное диагностическое сообщение с разбором, как именно парсятся данные, но в данном случае это не удаётся сделать.

Посмотрите на row 174, а конкретно, на массив или близкие к нему поля.

Александр
18.04.2018
20:13:47
Структура данные в строчках одинаковая везде.

Сложно, конечно, но придется разбираться. Спасибо!

Google
Alexander
18.04.2018
20:48:15
А не подскажете, есть ли в КХ какой-нибудь аналог explain для тюнинга запросов?

Александр
18.04.2018
20:49:15
Чт-то я уже все перерыл, так и не вижу проблемы в массиве. У меня пишется 83 колонки из которых бОльшая часть массивы. Это Nested колонки. Я прям всю строчку перевернул в JSON из TSV формата (распарсил TSV) и вывел в PrettyPrint. Они с нулевой начинаются или с первой?

А не подскажете, есть ли в КХ какой-нибудь аналог explain для тюнинга запросов?
Вроде бы нет такой штуки. Можно только логи мониторить. Там частично есть план выполнения запроса.

Alexander
18.04.2018
20:54:43
Вроде бы нет такой штуки. Можно только логи мониторить. Там частично есть план выполнения запроса.
По логам - это да, но это не очень удобно. А по поводу распределения запроса по нодам. Как понять, где какая часть выполняется: Expression MergeSorting PartialSorting Expression Aggregating Concat Expression Expression Expression Aggregating Concat Expression Expression Expression Aggregating Concat Expression Expression Expression Aggregating Concat Expression Expression Expression MergingAggregatedMemoryEfficient Materializing ParallelAggregating Expression × 12 Filter MergeTreeThread Remote × 2?

Александр
18.04.2018
20:55:28
Alexander
18.04.2018
21:02:09
Т.е. всё ниже Parallel... делается параллельно на разных нодах?

Александр
18.04.2018
21:04:30
Попробуйте оставить в файле несколько строк рядом с указанной и загрузить эти три строки.
https://img.facedsid.ru/tohac.jpg вот что показывает. Проверил эту колонку. В ней все ок. Вот значения https://img.facedsid.ru/3x8bi.jpg. Только я заметил один момент. Колонка у меня типом UInt8, а там в списке значений видно -1. Поправил структуру таблиц и все стало ок! Печально, что КХ не ругнулся, что тип значения некорректный ( Но я так понял, что есть там свои сложности.

Спасибо за рекоммендацию уменьшить кол-во значений в файле. Благодаря этому удалось найти конкретную колонку в которой проблема :)

Alexey
18.04.2018
21:05:12
Более сложная логика. То, что глубже Remote - делается на удалённых нодах. Но эта часть плана не видна на сервере-инициаторе. Но в данном случае есть точно такая же часть плана с локального шарда, и она видна. На других шардах делается то же самое удалённо.

Александр
18.04.2018
21:08:49
В идеале должен так показывать: https://gist.github.com/alexey-milovidov/306c3fa3e2f5946f06ff81fb73d6ce93
Он так и показал! Только вот ошибочное значение тут отсутствует :) https://img.facedsid.ru/y0rec.jpg

Т.е. он дошел до значения, которое битое в массиве и его не показал. Вместо него просто ERROR. Не совсем очевидно где именно ошибка ( С таким количеством данных очень сложно отследить :(

Alexey
18.04.2018
21:09:59
Ага.

Артемий
18.04.2018
22:29:27
Т.е. он дошел до значения, которое битое в массиве и его не показал. Вместо него просто ERROR. Не совсем очевидно где именно ошибка ( С таким количеством данных очень сложно отследить :(
Действительно, в лог попадет только успешно спаршенная часть строки. Но выше в логе должна быть инфа displayText() и номер строки Row. На скриншоте ее не видно, она должна быть выше.

Slach
19.04.2018
05:14:26
Мнда, latest Docker образ clickhouse сломался в части совместимости с zetcd окончательно теперь даже создать ReplicatedMergeTree таблицу не может. не то что "второй раз вставить данные" https://github.com/yandex/ClickHouse/issues/777#issuecomment-382612686 жаль =(

Kirill
19.04.2018
05:17:13
Мнда, latest Docker образ clickhouse сломался в части совместимости с zetcd окончательно теперь даже создать ReplicatedMergeTree таблицу не может. не то что "второй раз вставить данные" https://github.com/yandex/ClickHouse/issues/777#issuecomment-382612686 жаль =(
У zetcd есть некоторые проблемы, они его писали не по тому как Zookeeper работает, а просто чтоб был совместим с гошной библиотекой для Zookeeper'a. Я вообще слабо себе представляю что оно будет нормально работать если его не начать использовать, попутно чутка переписывая

Google
Slach
19.04.2018
05:20:03
У zetcd есть некоторые проблемы, они его писали не по тому как Zookeeper работает, а просто чтоб был совместим с гошной библиотекой для Zookeeper'a. Я вообще слабо себе представляю что оно будет нормально работать если его не начать использовать, попутно чутка переписывая
ну я не спорю да скорее надо zetcd пинать =( вот только понять бы как Кирил а ты случайно не знаешь какой нибудь референсный TestSuite для Zookeeper ? ну чтобы можно было zetcd поднять и прогнать на нем тесты а потом ребятам скинуть, типа если zookeeper то ВОТ если zetcd то ВОТ смотрите чем отличается?

Michal
19.04.2018
05:50:07
SELECT version() ┌─version()─┐ │ 1.1.54362 │ └───────────┘ :) show create table geoip2_city_blocks_ipv4 format TSVRaw; CREATE TABLE source_data.geoip2_city_blocks_ipv4 ( network String, geoname_id UInt64, registered_country_geoname_id UInt64, represented_country_geoname_id UInt64, is_anonymous_proxy UInt8, is_satellite_provider UInt8, postal_code String, latitude String, longitude String, accuracy_radius String) ENGINE = Log 1 rows in set. Elapsed: 0.002 sec. :) select count(*) from geoip2_city_blocks_ipv4; ┌──count()─┐ │ 10503254 │ └──────────┘ 1 rows in set. Elapsed: 0.006 sec. Processed 10.50 million rows, 10.50 MB (1.84 billion rows/s., 1.84 GB/s.) :) select * from geoip2_city_blocks_ipv4 into outfile '/tmp/tmp2.tsv'; 131072 rows in set. Elapsed: 0.173 sec. Processed 1.18 million rows, 126.13 MB (6.82 million rows/s., 729.59 MB/s.) :) select * from system.settings where value = '131072'; Ok. 0 rows in set. Elapsed: 0.003 sec.Почему 131072 строк в результате?

В логах 2018.04.19 07:54:48.736937 [ 70 ] <Information> executeQuery: Read 1179648 rows, 120.55 MiB in 0.083 sec., 14154395 rows/sec., 1.41 GiB/sec.

Alexey
19.04.2018
05:56:05
Посмотрите select * from system.settings WHERE changed Для настройки max_result_rows и подобных, ограничение срабатывает мягко - может читаться немного больше строк, чем выставлено в ограничении.

Michal
19.04.2018
06:04:04
Ок. Нашлось. Виноват был max_result_rows=100000 + result_overflow_mode=break. Изменял профиль пользователя на кастомовый и забыл об этом. Спасибо.

Alex
19.04.2018
06:13:18
Доброе утро, коллеги! В CH еще не нарисовался update ?

Stas
19.04.2018
06:34:39
Чат, а что то близкое к оракловскому LEAD на что можно в CH заменить?

Думаю в сторону runningdifference но вдруг есть более красивое решение :)

Igor
19.04.2018
06:58:59
Обновил Tabix - build 18.04.1 https://tabix.io/doc/Changelog/

Victor
19.04.2018
06:59:31
Добрый день. Поделитесь пожалуйста, как лучше вставлять в CH через Log ? Я вижу так: создаем таблицу типа Log инсертим большую пачку недоочищенных данных инсертим в MergeTree чрез селект со всякими полезными преобразованиями дропаем Log таблицу ? Но если вставка происходит в параллель, то придется на каждого писателя отдельную таблицу создавать ? MaterializedView никак не поможет ведь дропнуть источник не получится ?

Egor
19.04.2018
08:10:55
Мммм, а что если просто через кафку прогонять если влом делать батчинг на стороне приложения? Оно будет по скорости работать с той же скоростью что и прилодение?

Wolf
19.04.2018
08:12:51
Смотря какая у вас скорость приложения

Если миллиард вставок в секунду то не будет

Kirill
19.04.2018
08:13:29
Мммм, а что если просто через кафку прогонять если влом делать батчинг на стороне приложения? Оно будет по скорости работать с той же скоростью что и прилодение?
Можно и через кафку, но - это если не нужна обработка данных как , например, замена строковых значений на идентификаторы

Если миллиард вставок в секунду то не будет
в ClickHouse столько не вставить за секунду

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