@clickhouse_ru

Страница 646 из 723
Pavel
03.09.2018
13:00:53
Я правильно понимаю, что таймзона в toDateTime только для того, чтоб привести время в нужном поясе в качестве стринг, но она не используется при попытке время привести к секундам? select toDateTime(1535979088, 'Europe/Helsinki'), toDateTime(1535979088), toInt32(toDateTime(1535979088, 'Europe/Helsinki')), toInt32(toDateTime(1535979088)), timezone()

Michal
03.09.2018
13:13:44
Я правильно понимаю, что таймзона в toDateTime только для того, чтоб привести время в нужном поясе в качестве стринг, но она не используется при попытке время привести к секундам? select toDateTime(1535979088, 'Europe/Helsinki'), toDateTime(1535979088), toInt32(toDateTime(1535979088, 'Europe/Helsinki')), toInt32(toDateTime(1535979088)), timezone()
Время всегда хранится как unix timestamp. Таймзона определяет как переводить человекочитаемое время в этот самый таймстамп и обратно. При вызове toDateTime(.. 'Europe/Helsinki') создается таймстам и в ТИПЕ данных (не в самих данных) записывается что показывать этот таймстамп нужно переводя его в тз Хельсинки.

Алексей
03.09.2018
13:24:44
А есть простой способо перевести timestamp в timestamp с учетом часовой зоны?
Time stamp же не зависит от часовой зоны, только его представление, разве нет?

Google
Alexander
03.09.2018
13:26:39
привет! пожалуйста, дайте совет - как сделать так, чтобы аггрегатная функция count возвращала 0, если записей нет?
select count(*) from system.one where 0 settings empty_result_for_aggregation_by_empty_set=0; SELECT count(*) FROM system.one WHERE 0 SETTINGS empty_result_for_aggregation_by_empty_set = 0 ┌─count()─┐ │ 0 │ └─────────┘

Michal
03.09.2018
13:26:41
Время всегда хранится как unix timestamp. Таймзона определяет как переводить человекочитаемое время в этот самый таймстамп и обратно. При вызове toDateTime(.. 'Europe/Helsinki') создается таймстам и в ТИПЕ данных (не в самих данных) записывается что показывать этот таймстамп нужно переводя его в тз Хельсинки.
SELECT toDateTime(1535979088, 'Europe/Helsinki') AS ts_hl, toDateTime(1535979088) AS ts, toTypeName(ts_hl), toTypeName(ts), toInt32(ts_hl), toInt32(ts) Row 1: ────── ts_hl: 2018-09-03 15:51:28 ts: 2018-09-03 14:51:28 toTypeName(toDateTime(1535979088, 'Europe/Helsinki')): DateTime('Europe/Helsinki') toTypeName(toDateTime(1535979088)): DateTime toInt32(toDateTime(1535979088, 'Europe/Helsinki')): 1535979088 toInt32(toDateTime(1535979088)): 1535979088

А есть простой способо перевести timestamp в timestamp с учетом часовой зоны?
По умолчанию КХ форматирует время с помощью системной таймзоны, при этом есть настройка которая позволяет передавать таймзону "по умолчанию" с клиента. Можно явно указать что определенное поле должно форматироваться с учетом другой таймзоны просто указав её в типе данных.

Можно для всей колонки таблицы CREATE TABLE tz_test (ts DateTime('UTC')) ...

Ну или в селектах добавлять

Андрей
03.09.2018
13:53:15
Кто нибудь знает что означает в log файле clickhouse-server значения в квадратных скобках в каждой строке после колонкивремени( например [3], [21] и так далее...)?

Vadim
03.09.2018
14:05:49
G
03.09.2018
14:10:21
Michal
03.09.2018
14:11:51
а в фигурных скобках {} - query_id.

https://github.com/yandex/ClickHouse/blob/master/libs/libdaemon/src/OwnPatternFormatter.cpp

Андрей
03.09.2018
14:37:53
Google
Daniel
03.09.2018
14:40:02
Столкнулся с интересной проблемой: выгружен файл из кликхауса на другом сервере как tsv, смотрел спецсимволы через vi - действительно tsv. Вгружается с помощью Clickhouse-Client в кх в таблицу типа Memory - и вот начинаются странности: строки String становятся числами, причём какой-то рандом. Может, кто-то может объяснить или выразить предположение, отчего так? И я так понимаю DateTime столбец для Memory движка не нужен же?

Michal
03.09.2018
15:01:07
Alexey
03.09.2018
15:24:29
Согласно спецификации, первые четыре байта LZ4 - 0x184D2204. Прошёлся по .bin-файлам хексдампом, не нашёл. Походу Кликхаусом пишется raw stream.
ClickHouse не использует LZ4 framing format (способ укладывания сжатых блоков в файл), потому что сжатие с помощью LZ4 в ClickHouse появилось раньше, чем framing format самого LZ4.

То есть, вы смотрели не то. По поводу сжатия - данные всегда сжимаются, только если в конфиге специально не был прописан метод сжатия none. Про такую возможность мало кто знает и она по большей части бесполезна.

Michael
03.09.2018
15:32:56
Добрый день. Кластер из трёх нод, каждая из которых является репликой для своего шарда и для одного из соседних (перекрёстная репликация). При отвале ноды и её переподключении с восстановлением структуры таблиц ошибка "путь в зукипере уже существует". Можно было бы удалять скриптом, но там значение - массив, который нельзя удалять целиком: replicas:[1,2] Подскажите, как побороть?

Cyrus
03.09.2018
15:54:38
Привет, а запрос с sample должен ведь работать быстрее, чем без примерно весгда? У меня есть ReplicatedMergeTree в котороым при сэмплинге выше 0.1 скорость ниже чем без сэмплинга, и я вот слегка затрудняюсь понять что происходит

Vadim
03.09.2018
15:58:26
Привет, а запрос с sample должен ведь работать быстрее, чем без примерно весгда? У меня есть ReplicatedMergeTree в котороым при сэмплинге выше 0.1 скорость ниже чем без сэмплинга, и я вот слегка затрудняюсь понять что происходит
Есть несколько причин, почему это может быть: 1) Медленно вычисляется хэш-функция. 2) ключ сэмплирования находится после мелко-гранулированная часть PK 3) Ключ сэмплирования не равномерно распределенный в своем типе данных.

Cyrus
03.09.2018
16:01:59
Есть несколько причин, почему это может быть: 1) Медленно вычисляется хэш-функция. 2) ключ сэмплирования находится после мелко-гранулированная часть PK 3) Ключ сэмплирования не равномерно распределенный в своем типе данных.
sipHash64 я использую, это не intHash32 конечно, но он же вроде бы вставку только должен тормозить, нет? sipHash64 от текстового представления uid который id пользователя. Кажется, что оно должно быть достаточно равномрено в логе событий по поводу 2) не очень понял

Michael
03.09.2018
16:03:48
@milovidov_an, @mfilimonov, спасибо

Vadim
03.09.2018
16:06:00
sipHash64 я использую, это не intHash32 конечно, но он же вроде бы вставку только должен тормозить, нет? sipHash64 от текстового представления uid который id пользователя. Кажется, что оно должно быть достаточно равномрено в логе событий по поводу 2) не очень понял
Хороший ключ сэмплирования должен быть легким для чтения и быстро вычислим. Про второй пункт вот пример: Плохо: ORDER BY (Timestamp, sample_key); Хорошо: ORDER BY (CounterID, Date, sample_key). Об этом можно почитать вот тут (https://github.com/yandex/clickhouse-presentations/tree/master/rit2018)

Cyrus
03.09.2018
16:23:42
Более правильная ссылка: https://yandex.github.io/clickhouse-presentations/rit2018/
Спасибо, а я уже локально читать начал после git clone, кекеке.

Evgeniy
03.09.2018
16:57:31
Более правильная ссылка: https://yandex.github.io/clickhouse-presentations/rit2018/
уже есть лучшие практики как правильно проектировать витрину под СН ? типа - джойнов как можно меньше - все кладите в витрину и т.д. и т.п

Alexey
03.09.2018
17:07:13
уже есть лучшие практики как правильно проектировать витрину под СН ? типа - джойнов как можно меньше - все кладите в витрину и т.д. и т.п
Не особо систематизировали. На похожую тему есть доклад с Highload 2017 "эффективное использование ClickHouse".

Google
Daniel
03.09.2018
19:23:42
А последовательность столбцов в данных и в запросе INSERT совпадают?
Спасибо, нет... В этом и была ошибка - заработался)

Konstantin
03.09.2018
20:11:00
Кажется, я заставил ClickHouse тормозить

Victor
03.09.2018
20:11:24
Кажется, я заставил ClickHouse тормозить
наверно, пожалел 2 байта?

nikoinlove
03.09.2018
20:11:34
Это оффтопик!

Konstantin
03.09.2018
20:13:35
У меня есть несколько процессов, которые вставляют данные через POST - TSV, перед вставкой они делают SELECT 1. Что-то пошло не так и SELECT 1 стал отрабатывать дольше, чем ClickHouse отвечает, они отваливались по таймауту и через чуть-чуть пробовали ещё раз

в результате, видимо, этих SELECT 1 накопилось так много, что оно еле ворочается, даже трейсбеки (о том, что не могут записать результат в HTTP response) записываются в лог с тормозами

SHOW PROCESSLIST отрабатывал минут 10 и показал 82 запроса, из них - вставки (самому старому - 4000 секунд), остальные - те самые SELECT 1

В чём юмор про два байта?

Victor
03.09.2018
20:18:28
В чём юмор про два байта?
известная цитата из доклада Алексея, что два байта... пауза... не жалко. Был разговор о том как разные данные эффективнее хранить и много прикол про другие отделы яндекса, которые называть не будем

Konstantin
03.09.2018
20:19:32
а, помню что-то такое, хоть и без конкретики

Victor
03.09.2018
20:21:01
https://youtu.be/Ac2C2G2g8Cg очень крутой доклад

https://youtu.be/Ac2C2G2g8Cg?t=20m54s вот, нашёл

Dmitry
04.09.2018
07:36:42
Добрый день, возник вопрос: использую официальный JDBC драйвер КХ, пишу разными потоками в разные таблицы через спринговый JdbcTemplate которому подсунут ClickhouseDatasource, стабильно вываливается ошибка Code: 373, e.displayText() = DB::Exception: Session is locked by a concurrent client. Подскажите куда копать?

Dmitry
04.09.2018
07:49:57
Tima
04.09.2018
07:53:21
т.е. получается нужно по отдельному датасорсу для каждого потока?
Попробуйте отключить сессии в драйвере, указав session_id как пустую строку

Vasiliy
04.09.2018
07:54:28
Google
Andrii
04.09.2018
07:58:44
Да, воткните в сервера больше дисков, КХ нормальное долгосрочное хранилище
мы малюсинький стартапчик в котором количество данных планирует увеличиватся(мы надеемся) и если оно увеличится хотя бы в 10 раз мы будем генерировать 100 гб сырых данных в день, в долгосрочной перспективе мы исчерпаем возможности по увелечению диска. а так сырые данные я преображаю и записываю в инфлюкс(получается очень компактно где-то 5 MB инфлюксовских данных равняются выборке из 100 GB сырых). Но руководство и маркетинг хотят по какой-то причине хранить сырые данные

Stanislav
04.09.2018
08:09:33
Инфлюкс умеет continuous query

В смысле - сам агрегирует сырые данные в архив

Daniel
04.09.2018
08:12:00
Доброго дня, подскажите Python библиотеку для работы с КХ, в которой можно открыть коннект и посылать запросы в рамках одного коннекта, а не открывать новый для каждого нового запроса.

Denis
04.09.2018
08:12:08
мат вью поверх таблицы с аггрегирующими функциями...

а если надо исходные данные пожать, так кх их и так жмёт. блоки строк-то lz4 жмутся.

Daniel
04.09.2018
08:15:54
Уточните, почему именно в рамках одного коннекта?
Убрать задержки подключения-отключения от базы. Надо обработать большой файл, заглядывая в КХ

Tima
04.09.2018
08:30:04
У вас в среднем запрос сколько выполняется? А сколько тратиться на подключение-отключение? Нагрузка КХ подразумевает что запросов выполняется сравнительно небольшое кол-во. Больше 100 - уже будут проблемы, в независимости что считаете. Так что пока непонятно зачем вам постоянное подключение

Michael
04.09.2018
09:22:59
Добрый день. Кластер из трёх нод, на каждом ноде две таблицы. Первая - реплика своего шарда; вторая - реплика для одного из соседних (перекрёстная репликация). При записи данные реплицируются в одноимённые таблицы (myTableShard), а не в myTableShardReplica, которые созданы в качестве реплик. Подскажите, пожалуйста, что делаю не так? CREATE TABLE IF NOT EXISTS myTableShard ( date Date, unix_ts UInt64 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/01/myTableShard', 'node1.a', date) PARTITION BY date ORDER BY unix_ts; CREATE TABLE IF NOT EXISTS myTableShardReplica ( date Date, unix_ts UInt64 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/03/myTableShard', 'node1.a', date) PARTITION BY date ORDER BY unix_ts; CREATE TABLE IF NOT EXISTS myTable AS myTableShard ENGINE = Distributed(clusterName, test, myTableShard, `unix_ts`);

Anisim
04.09.2018
10:42:16
Опубликованы видеозаписи докладов ClickHouse Meetup в Петербурге, который состоялся 16 августа. Насладиться ими можно на странице мероприятия: https://events.yandex.ru/events/ClickHouse/16-aug-2018/

Evgenii
04.09.2018
11:01:50
ZooKeeper: There are 550000 active watches. There must be a leak somewhere - добрый день, ткните пальцем в какую сторону смотреть?

Alex
04.09.2018
11:02:27
слишком много Replicated таблиц?

Evgenii
04.09.2018
11:03:22
9 таблиц

началось после переезда кластера в другой дц, сначала три сервера добавили из нового дц и потом три вывели из работы в старом дц

может происходить из-за мертвых реплик?

Alexander
04.09.2018
11:17:49
подскажите, можно ли ch как-то попросить "увидеть" внутри подзапроса выражения объявленные в блоке with перед внешним запросом? Что-то типа такого: WITH 1 + 1 AS two SELECT * FROM ( SELECT two + 1 )

Google
Anastasia
04.09.2018
11:24:40
Всем привет Есть таблицы - Потребитель Kafka. - Целевая таблица с необходимой структурой. - И материализованное представление. Материализованное представление перекладывает данные из очереди (потребитель Kafka) в целевую таблицу. Данные поступают непрерывно, и в целевой таблице появляются пачками, в моих тестах через 15 минут. Для моих целей это очень долго, и я хочу управлять этим временем, сделать этот период поменьше. Судя по тому что вижу, матерализованное представление пишет данные пачками по 256 МБ, вроде бы. Сбственно вопрос какими настройками конфигурируется состояние, при котором произойдет запись в целевую таблицу? Уменьшила min_insert_block_size_bytes в 1024 раза до 262144 На всякий случай уменьшила min_insert_block_size_rows до 1024 Но ничего не изменилось

Dmitry
04.09.2018
11:28:40
а возможно после insert в replacingmergetree и select final посмотреть предыдущие данные, которые были замены ?

Anastasia
04.09.2018
11:39:46
stream_flush_interval_ms ?
7.5 секунд по умолчанию, явно не мой случай

Маркел
04.09.2018
11:41:35
Тогда уменьшение max_block_size?

Anastasia
04.09.2018
11:52:15
Тогда уменьшение max_block_size?
Спасибо за участие ) Оказывается изменила min_insert_block_size_bytes в другой сессии, всё ок

Alexey
04.09.2018
11:52:21
https://github.com/yandex/ClickHouse/blob/master/libs/libdaemon/src/OwnPatternFormatter.cpp
А в каких случаях query_id пишется в лог? clickhouse-client шлёт query_id, но он записывается только в debug логах и уже в самом сообщении, а не в фигурных скобках

Tima
04.09.2018
12:04:16
Кто-нибудь дружил КХ и MySQL, если оба в контейнере? КХ не видит MySQL, пишет Poco::Exception. Code: 1000, e.code() = 2002, e.displayText() = mysqlxx::ConnectionFailed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) ((nullptr):0), e.what() = mysqlxx::ConnectionFailed

Tima
04.09.2018
12:26:38
Табличной функцией

Evgeny
04.09.2018
12:27:22
Как выглядит вызов функции?

Tima
04.09.2018
12:29:33
Как выглядит вызов функции?
CREATE TABLE sites (...) ENGINE = MySQL('localhost:3306', 'admin_stat', 'sites', 'root', 'mypass')

Evgeny
04.09.2018
12:35:50
есть только догадка, что порт не прослушивается или не видится из контейнера

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