@clickhouse_ru

Страница 653 из 723
Maxim
11.09.2018
15:52:39
Привет! У меня вопрос по формату выходных данных. В документации сказано, что в формате TabSeparated значения NULL передаются как \N. Но я заметил, что если возвращаются Tuple'ы, в которых есть Nullable значения, то в них все равно пишется NULL, за место \N. Так и должно быть? Например после выполнения запросов: > CREATE TABLE t (a Nullable(UInt8), b Tuple(Nullable(UInt8), UInt8)) ENGINE = Memory > INSERT INTO t VALUES (NULL, (NULL, 1)) > SELECT * FROM tВернется строка \\N\t(NULL,1)\n

Google
Maxim
11.09.2018
16:49:03
И там увидите как эта штука пишется
Да, именно так и делал, в примере забыл указать

Илья
11.09.2018
16:52:31
подскажите, пожалйуста, в каком файле нужно прописать max_bytes_before_external_sort, max_memory_usage, max_bytes_before_external_group_by ? я так понимаю задать нужно для пользователя? просто в наших конфигах есть только параметр max_memory_usage, хотя ClickHouse этого года

и нужно ли сервак рестартить?

Alexey
11.09.2018
16:58:05
в профайл в users.xml

рестартить не надо

Alex
11.09.2018
17:15:13
Вопрос к уважаемой команде разработки. Сам новый релиз не пробовал, но имею вопрос. Использование group by wirh rollup реализовано хардкорно, или перформанс будет схож с Array join массивов с комбинациями колонок?

Konstantin
11.09.2018
17:16:38
Имеет ли смысл под значения с id использовать int если стринги все равно хешируются, и уникальных значений этих Id планируется пару десятков. В общем,у меня вопрос цены удобства 1345 или "Вася"?

Илья
11.09.2018
17:29:18
рестартить не надо
Спасибо. Разобрались, у клика не было прав читать созданные препрцессед файлы

Anton
11.09.2018
17:52:33
Google
Alexey
11.09.2018
17:59:14
Наши аналитики тоже сейчас делают через arrayJoin, но это получается неудобно - надо писать несколько arrayJoin-ов и куча времени тратится на размножение строк. GROUP BY WITH ROLLUP позволяет этого избежать.

Alexander
11.09.2018
18:20:06
Подскажите, пожалуйста - в доке написано, что SELECT ... FROM table FINAL работает только для CollapsingMergeTree. Это правда? Проверить в данный момент нет возможности, а информация нужна. У меня есть ощущение, что всё работало и для ReplacingMergeTree, но я не уверен.

Alexey
11.09.2018
18:22:04
У нас запросы пишут роботы для роботов) Но ввиду сказанного, будем резко переделывать на rollup
SELECT arrayJoin([RegionID, 0]) AS k1, arrayJoin([SearchEngineID, 0]) AS k2, count() FROM test.hits GROUP BY k1, k2 ORDER BY count() DESC LIMIT 10 242 мс. SELECT RegionID AS k1, SearchEngineID AS k2, count() FROM test.hits GROUP BY k1, k2 WITH ROLLUP ORDER BY count() DESC LIMIT 10 43 мс. Правда первое - это всё-таки аналог WITH CUBE, которого ещё нет.

Tima
11.09.2018
19:43:00
Создал issue https://github.com/yandex/ClickHouse/issues/3105

?
11.09.2018
20:01:59
>Возможность использования дублирующихся столбцов в секции USING для JOIN #3006 а как эту возможность отключить? :) джойны поломались с апдейтом

Alexey
11.09.2018
20:03:29
?
11.09.2018
20:05:33
такой вот запрос `SELECT * FROM ( SELECT MainID, COUNT() AS cnt FROM table1 GROUP BY MainID ) ANY LEFT JOIN ( SELECT MainID, AddField1, AddField2 FROM table2 ) USING (MainID)` выдает таблицу со структурой MainID, cnt, MainID, AddField1, AddField2 раньше (на 18.04) было MainID, cnt, AddField1, AddField2

?
11.09.2018
20:09:59
а это в каком конфиге? не вижу в доках пока

Alexey
11.09.2018
20:10:43
Настройка уровня пользователя. Сначала проверьте запрос в клиенте командной строки с помощью SET.

В старой версии такой запрос должен был выдавать MainID, cnt

?
11.09.2018
20:12:13
да, сработало, спасибо

Александр
11.09.2018
20:12:40
@milovidov_an у нас была беда с сервером и в папке distributed таблицы лежат папочки типа default@10%2E20%2E116%2E11:9000,default@10%2E20%2E117%2E9:9000 - как их дописать в таблицу?

?
11.09.2018
20:12:48
а как сделать селект без этой настройки, но чтобы было в одном экземпляре? перечислить явно без *?

Alexey
11.09.2018
20:13:24
а как сделать селект без этой настройки, но чтобы было в одном экземпляре? перечислить явно без *?
Без этой настройки всё работает так же, как раньше (как в предыдущей версии 18.10.3 и раньше). Да, перечислять явно.

Google
?
11.09.2018
20:14:00
ну да, я просто с 18.4 обновился

Alexey
11.09.2018
20:17:52
@milovidov_an у нас была беда с сервером и в папке distributed таблицы лежат папочки типа default@10%2E20%2E116%2E11:9000,default@10%2E20%2E117%2E9:9000 - как их дописать в таблицу?
В этих директориях находятся файлы с данными для отправки на удалённые серверы. Файлы .bin. Distributed таблица берёт файлы из этой очереди и пытается отправить. Если их не получается отправить, об этом будут сообщения в логе сервера. Надо посмотреть, в чём там проблема. Типичные проблемы: - изменился IP адрес сервера - надо исправить его в имени директории и перезапустить clickhouse-server; - файл побился на файловой системе - можно отложить его в сторону, чтобы остальные файлы отправились.

Александр
11.09.2018
20:18:38
Нам пришлось пересоздавать таблицы и эти файлы я поместил руками туда. У нас сломался зукипер и нам пришлос аттачить куски вручную в таблицы

И distributed тоже на всякий случай пересоздали, предварительно "сбекапив" эти временные куски

Alexey
11.09.2018
20:20:31
В этих временных кусках находятся данные, которые всё ещё должны быть отправлены. Посмотрите, почему не отправляются. Насколько я помню, список файлов обновляется без перезагрузки. Сервер об этом напишет. Могут быть ещё проблемы с правами.

Александр
11.09.2018
20:26:05
Проверил права - все принадлежит clickhouse пользователю. Алгоритм был такой: Скопировали /var/lib/clickhouse/data/DB/TABLE/* в отдельную папку Удалили папку с таблицей, удалили все мета-данные, при этом зукипер был абсолютно пустой Создали таблицу Положили файлики туда где они и были, т.е. в /var/lib/clickhouse/data/DB/TABLE/* В логах сейчас пусто, т.е. КХ будто бы не видит эти папки вообще.

Александр
11.09.2018
20:28:24
Да, мы так и сделали, но есть директории типа default@IP:PORT...

аттач мы делали для merge tree таблицы, там все ок и все взлетело, а вот distributed - беда

Alexey
11.09.2018
20:30:42
аттач мы делали для merge tree таблицы, там все ок и все взлетело, а вот distributed - беда
Проблема в том, что Distributed таблица не видит данные, которые вы для неё подложили? Возможно, что она всё-таки не обновляет список файлов без перезагрузки. Чтобы не перзагружать сервер, можно сделать DETACH TABLE и ATTACH TABLE для этой таблицы. Также стоит проверить, что имена директорий соответствуют конфигурации кластера.

Александр
11.09.2018
20:32:44
Проблема в том, что Distributed таблица не видит данные, которые вы для неё подложили? - да. Файлы, которые должны разлететься по шардам. Detach и attach таблицы не помог ( В логах пусто (

Alexey
11.09.2018
20:36:20
Проблема в том, что Distributed таблица не видит данные, которые вы для неё подложили? - да. Файлы, которые должны разлететься по шардам. Detach и attach таблицы не помог ( В логах пусто (
Сделайте вставку в эту Distributed таблицу, посмотрите где создастся файл, как он отправится. Возможно, что что-то перепутано в путях.

Александр
11.09.2018
20:37:53
Просто он почему-то не сразу их вписал

Alexey
11.09.2018
20:39:20
Там есть exponential backoff при ошибках - время повтора увеличивается до 30 сек.

Александр
11.09.2018
20:40:04
Ну вобщем оно прошло, но после детача и не моментално, а спустя какое-то время

Vitaliy
11.09.2018
20:58:19
Hello here на сколько хорошо работает JSONEachRow при вставке большого обема данных?

к примеру 50-100 тыс строк за вставку

Alexey
11.09.2018
21:06:40
Количество данных, вставляемых за один раз - это не проблема. В целом по throughput формат менее эффективен чем CSV, TSV - за счёт парсинга имён полей. При достаточно большом размере пачки throughput (количество строк в секунду) не зависит от объёма данных, отправляемых за один раз.

Vitaliy
11.09.2018
21:19:52
а на сколько он менее эффективен?

Google
Alexey
11.09.2018
21:26:15
Приблизительно пропорционально объёму данных в текстовом виде. Например, файл в JSONEachRow весит в два раза больше, чем CSV - будет примерно в два раза медленнее. Но возможны вариации в зависимости от конкретных типов данных. Обычно разница менее чем пропорциональная.

Vitaliy
11.09.2018
21:29:36
если буду писать по 500 тыс строк раз в 5-10 секунд то деградации производительности не сильно будет заметно?

Alexey
11.09.2018
21:31:02
если буду писать по 500 тыс строк раз в 5-10 секунд то деградации производительности не сильно будет заметно?
Размер пачки - Ок. Вставка в JSONEachRow менее эффективна, чем в CSV или TSV. Впрочем, если у вас уже есть данные в JSONEachRow, то вставка их сразу в этом формате, будет более эффективной, чем предварительная конвертация.

Также иногда форматирование в JSONEachRow на стороне своих программ оказывается более эффективным, чем в CSV или TSV.

Vitaliy
11.09.2018
21:43:56
в общем сделаю эксперемент, а потом уже буду принимать решения…..

G
12.09.2018
04:24:49
Добрый утро, коллеги Требуются консалтинговые услуги по CH Кому интересно пишите в личку Спасибо

Wolf
12.09.2018
04:25:56
если деньги есть то вам к альтинити

если нет то проще тут поспрашивать

G
12.09.2018
04:28:07
Поначалу пока проект только стартует достаточно будет иметь человека имеющего опыта для решения оперативных вопросов

Альтинити не гуглится, можно ссылку?

Alex
12.09.2018
04:29:52
G
12.09.2018
04:33:29
Спасибо

Но мы приоритет отдаем сейчас отдельным кадрам с опытом

Dmitry
12.09.2018
06:02:11
Доброе утро! Подскажите, пожалуйста, что за ошибка? Как пофиксить? default.{table} (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 235, e.displayText() = DB::Exception: Part 20180409_2_4_1 (state Committed) already exists, e.what() = DB::Exception

Evgen
12.09.2018
07:36:22
Всем привет! Наблюдается проблема с обновлением внешних словарей (из постгреса), проверял в версиях 18.12.5 - 18.12.13 Словари создаются/обновляются при старте кликхауса (это можно увидеть в колонке creation_time в таблице `system.dictionaries`). При следующих попытках обновления (через 5 минут, согласно настройкам) падает исключение (колонка last_exception той же таблицы): Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found, e.what() = Host not found В логах:``` 2018.09.12 05:28:11.448817 [ 52 ] <Error> ExternalDictionaries: Cannot update external dictionary 'bundle_ids', leaving old version: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found, e.what() = Host not found ` Доступ к БД постгреса есть - проверял из консоли клиентами psql и isql (последний с явным указанием настроек ODBC как для кликхауса). Выполнение запроса SYSTEM RELOAD DICTIONARIES; нормально обновляет словари (!), но спустя 5 минут проблема возвращается... Что я делаю не так?

Andrey
12.09.2018
07:47:52
Всем привет. Есть ли возможность из jdbc следить за статусом (процентом исполнения) запроса? Есть идеи?

George
12.09.2018
08:22:40
Всем привет

Подскажите, пожалуйста, по репликации и шардингу. Правильно ли я понял, что репликация запросы SELECT не ускоряет от слова "совсем"?

Oleg
12.09.2018
08:25:30
реплика дает копию данных на другой машине. Если одна машина может к примеру 100 запросов в секунду, то 2 смогут 200. Вывод = SELECT условно ускоряет репликация

Google
Александр
12.09.2018
08:26:21
Ускоряет запросы шардинг

George
12.09.2018
08:26:58
Т.е. в случае реплики - запрос не бьется на части, каждая из которых обрабатывается на отдельной реплике, а потом результат "склеивается"?

George
12.09.2018
08:27:13
но номинально можно дубасить в каждую реплику по 100 условных запросов и получить 200

окей. А если я хочу на двух серверах иметь полную копию данных - что делать?

подымать локально два инстанса кликхауса?

Александр
12.09.2018
08:28:46
Ну смотрите. У вас запрос выполняется 5 секунд. Вы за минуту можете обработать допустим 12 таких запросов. В какой-то момент вам требуется обрабатывать 24 запроса в минуту. Вы поднимаете вторую реплику и запросы у вас так и будут выполняться по 5 секунд, просто каждая из реплик может обработать по 12 запросов.

Вот полная копия данных - это реплика. У нас 8 машин. 4 шарда по 2 реплики.

George
12.09.2018
08:29:46
нету 8 машин. Есть две машины - на которых хочется собраться и отказоустойчивость и увеличить скорость

единстыенный выход, который я вижу - ставить в параллель два инстанса кликхауса на одной машине.

Александр
12.09.2018
08:30:09
А если вас не устраивает время запроса в 5 секунд и вы хотите его уменьшить, скажем до 2.5, то вы шард добавляете и у вас запрос работает 2.5 секунды вместо 5.

Александр
12.09.2018
08:30:37
нету 8 машин. Есть две машины - на которых хочется собраться и отказоустойчивость и увеличить скорость
Можно и одним обойтись. У альтинити вроде была статья на тему кросс-репликации

Александр
12.09.2018
08:30:51
Сейчас постараюсь

George
12.09.2018
08:31:10
и еще - правильно я понимаю, что в случае единичного запроса Кликхаус его не параллелит на ядра?

условно имеется сервер с 72 ядрами и кучей ОЗУ. разницы по времени запроса с сервером с 2 ядрами и 64ГБ ОЗУ я не заметил

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