@clickhouse_ru

Страница 227 из 723
Alexey
05.08.2017
11:44:57
я ещё не понял, что такое партицирование, поэтому пока не вижу проблем)))

Tima
05.08.2017
11:48:01
Почитайте, зачем нужно поле EventDate https://clickhouse.yandex/docs/ru/table_engines/mergetree.html , возможно при небольшом размере данных, один большой "кусочек" не будет проблемой

Вот ещё на тему партиций https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D1%86%D0%B8%D1%8F#id5

Alexey
05.08.2017
11:52:34
Спасибо. В первом описании ещё и слово "семплирование" используется, поэтому слово "партицирование" пока для меня недоступно) Я как-то с этими словами в музыке больше знаком. Боюсь, придётся исходники читать.

Google
Alexey
05.08.2017
14:19:05
Добрый день. А как так получается, что по айди ищет, а по строке нет ( = и LIKE ) ? Значение строки при этом называет идентификатором. Что я делаю не так? select city_id, name_ru from _cities_log where city_id=1 limit 1 SELECT city_id, name_ru FROM _cities_log WHERE city_id = 1 LIMIT 1 ┌─city_id─┬─name_ru─┐ │ 1 │ Москва │ └─────────┴─────────┘ 1 rows in set. Elapsed: 0.017 sec. Processed 65.54 thousand rows, 2.06 MB (3.77 million rows/s., 118.61 MB/s.) :) select city_id, name_ru from _cities_log where name_ru="Москва" limit 1 SELECT city_id, name_ru FROM _cities_log WHERE name_ru = Москва LIMIT 1 Received exception from server: Code: 47. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Unknown identifier: Москва. 0 rows in set. Elapsed: 0.031 sec.

Alexey
05.08.2017
14:23:20
получилось, спасибо!

Nikita
05.08.2017
17:11:47
Всем привет! Столкнулись с проблемой — не можем найти решение. Стал зависать один запрос с FINAL по CollapsingMergeTree, доходит до 9% с хорошей скоростью и всё. KILL QUERY он не убивается, по таймауту не отлетает, так и висит. Спасает только рестарт сервера. В err.log ничего нет, куда копать? Без FINAL он выполняется.

Александр
05.08.2017
18:02:14
Кстати, final не меняет состояние данных в таблице? Я имею ввиду он не как optimize срабатывает?

Alexey
05.08.2017
18:08:03
Не меняет.

Nikita
05.08.2017
18:10:24
1.1.54262

Есть ещё сервер 1.1.54198, там почти такие же данные, такой проблемы нет.

Если запрос немного упростить, то он вообще на 0% встаёт

Alexey
05.08.2017
18:16:34
Да, это проблема той testing версии. Можете обновить на последний testing и проблема исправится.

Google
Nikita
05.08.2017
18:26:42
Спасибо, попробуем :)

Kirill
05.08.2017
18:44:30
@milovidov_an , добрый вечер. Вот есть желание добавить в драйвер поддержку сжатия, можно "на пальцах" обяснить как оно работает, т.е. что писать/читать ?

Alexey
05.08.2017
19:00:17
Насколько я помню, сжимаются блоки с данными Native формата, а всё остальное (всякие номера пакетов и т. п.) передаётся без сжатия. Сжатые данные устроены так. Они представляют собой набор сжатых фреймов. Каждый фрейм имеет следующий вид: чексумма (16 байт), идентификатор алгоритма сжатия (1 байт), размер сжатых данных (4 байта, little endian, размер не включает в себя чексумму, но включает в себя остальные 9 байт заголовка), размер несжатых данных (4 байта, little endian), затем сжатые данные. Идентификатор алгоритма: 0x82 - lz4, 0x90 - zstd. Чексумма - CityHash128 из CityHash версии 1.0.2, вычисленный от сжатых данных с учётом 9 байт заголовка. См. CompressedReadBufferBase, CompressedWriteBuffer, utils/compressor, TCPHandler.

Kirill
05.08.2017
19:04:08
Спасибо большое

Александр
06.08.2017
08:41:41
А кто подскажет как через insert values записать Nested? Просто как массив передавать? Типа [[val, val], [val, val]]?

Разобрался :)

Mike
06.08.2017
13:40:17
(Оффтоп) А кто-то настраивал интеграцию метрики с КХ? У меня вообще никак не заводится :( Что я могу делать не так? https://github.com/yndx-metrika/logs_api_integration/issues/9

Alan
06.08.2017
13:42:36
ну только вчера пробовал не было проблем, мб версия кликхауса влияет?

Mike
06.08.2017
13:44:29
у меня 1.1.54164 на дев тачке

Alan
06.08.2017
13:44:34
python 2.7.10 ClickHouse 1.1.54245

Mike
06.08.2017
13:45:16
попробую обновиться

Причем структуру скрипт норм создал, а данные не хочет грузить

скачал кусок с метрики запросом wget https://api-metrika.yandex.ru/management/v1/counter/3199561/logrequest/194328/part/1/download?auth_token=xxx -O c1, загружается руками cat c1 | sed "1d" | clickhouse-client --query="insert into qwe1.hits_all FORMAT TabSeparated" :) видимо вопрос к скрипту загрузки

Александр
06.08.2017
18:47:19
При вставке CSV форматом получаю ошибку: Cannot parse quoted string: expected opening quote: (at row 1) Row 1: Column 0, name: EventDate, type: Date, parsed text: "<DOUBLE QUOTE>2017-06-15<DOUBLE QUOTE>" Column 1, name: EventTime, type: DateTime, parsed text: "<DOUBLE QUOTE>2017-06-15 23:00:30<DOUBLE QUOTE>" Column 2, name: EventType, type: String, parsed text: "<DOUBLE QUOTE>EntitiesAggregationStarted<DOUBLE QUOTE>" Column 3, name: Tags.Name, type: Array(String), parsed text: "<DOUBLE QUOTE>[<SINGLE QUOTE>CourseId<SINGLE QUOTE>, <SINGLE QUOTE>Facts<SINGLE QUOTE>]<DOUBLE QUOTE>" Column 4, name: Tags.Value, type: Array(String), parsed text: <EMPTY>ERROR Вот собственно строка: "2017-06-15","2017-06-15 23:00:30","EntitiesAggregationStarted","['CourseId', 'Facts']","['2', ['result','progress']]" Я правильно понял, что почему то КХ не может спарсить открывающиеся кавычки? Только вопрос почему, если все обернуто кавычками.

Alexandr
06.08.2017
18:50:59
Кавычки двойные нужны а не одинарные

Александр
06.08.2017
18:52:10
Т.е. везде вообще должны быть двойные?

У меня одинарные внутри двойных

"['2', ['result','progress']]" - вот например

Alexandr
06.08.2017
18:52:48
Там кавычки не взаимозаменяемые

Александр
06.08.2017
18:53:54
Что-то какой то бред. Если у меня будет там формат колонки String в котором одинарные кавычки, то я их не смогу вписать что ли? )

Google
Alexandr
06.08.2017
18:55:09
Может заслэшить?

Alexey
06.08.2017
19:04:33
['2', ['result','progress']] - это получается не Array(String), так как в массиве разные типы элементов - сначала идёт строка '2', а потом ещё один массив.

Александр
06.08.2017
19:16:42
Vladislav
06.08.2017
20:41:50
Всем привет. А подскажите, плиз, задача - сделать топ сайтов по посещаемости и узнать позицию нужного сайта в этом топе. select site,count() as cnt,if(site='aaa.ru',1,0) as outsite from table group by site order by cnt так получаем топ. А как можно узнать позицию, допустим сайта aaa.ru? В голову приходят только варианты с join с system.numbers, но что указать в using не понятно. Переменные в КХ, вроде как отсутствуют. Получается единственный вариант - выгрузка всего топа на клиент и там определение позиции?

О! Нашел rowNumberInAllBlocks, похоже то что нужно

Maksim
06.08.2017
20:48:44
о, точняк

Vladislav
06.08.2017
21:10:50
Теперь интереснее задача. А как получить не только позицию, а 3 сайты выше в топе и 3 ниже? Пока только такое в голову приходит... https://pastebin.com/DBVnQVNZ Правильно ли я понимаю, что в этом случае нагрузка будет х3, по сравнению, с вариантом выгрузки всего топа на клиент?

Maksim
06.08.2017
21:11:16
мне кажется, что уже разумно как-то с блоками поиграть

Vladislav
06.08.2017
21:13:05
т.е. в сторону runningAccumulate?

Alexey
06.08.2017
21:13:38
Я бы лучше на стороне клиента сделал простую пост-обработку.

Vladislav
06.08.2017
21:14:51
топ 3м записей получается, мне кажется по сети будет больно тянуть такой объем

Alexey
06.08.2017
21:16:06
Сохраните топ во временную таблицу. А потом уже несложный запрос будет.

Vladislav
06.08.2017
21:22:50
О! Отличный план. Спасибо! Что-то был уверен, что в clickhouse еще нет сессий

Rayan
07.08.2017
04:21:14
Привет всем, как вы обходитесь без autoincrement? имеете внешний счетчик? или тупо SELECT MAX(id) from t перед BATCH insert :)

Admin
ERROR: S client not available

Rayan
07.08.2017
05:18:06
может у других есть?

Alexey
07.08.2017
05:19:44
У нас есть столбец с id, но он не autoincrement, а некий идентификатор, генерирующийся снаружи на разных машинах независимо.

Rayan
07.08.2017
05:29:45
random int64?)

а понял

Google
Rayan
07.08.2017
05:30:14
считай просто внешний счетчик..

во время ETL думал изменять логику equality сущности

и соотвественно в таком случаи я уже не смогу опираться на айди из исходной системы

так как CH это не транзакционная БД, то видимо надо писать только с одного потока если использовать workaround SELECT MAX(id) from t?

чтобы исключить конфликт по id

Alexey
07.08.2017
05:41:16
MAX(id) FROM t будет медленно работать - full scan. Есть несколько вариантов, как сделать инкрементный идентификатор: 1. Хранить счётчик в отдельной системе (например, в Redis); 2. На разных серверах, которые записывают данные, иметь смещение и множитель, и генерировать идентификаторы с учётом этого;

Alexey
07.08.2017
05:42:51
Не поможет - нет оптимизации для такого случая.

Alexander
07.08.2017
05:43:46
Max(...) не смотрит на индексы? Надо issue завести наверное.

Rayan
07.08.2017
05:44:45
Спасибо за полезную информацию

Александр
07.08.2017
07:05:38
Slach
07.08.2017
07:58:00
Я из файла вставляю данные
в файле версия браузера 21.0 а для нее в python коде например заведен INT - "ym:s:browserMajorVersion": "UInt16", - "ym:s:browserMinorVersion": "UInt16", + "ym:s:browserMajorVersion": "String", + "ym:s:browserMinorVersion": "String",

ch_types.json смотрите

Александр
07.08.2017
07:58:47
Ilya
07.08.2017
08:00:21
Вы наверное меня с кем то спутали :) Я не использую python и ничего связанного с логами метрики :)
Зато у тебя были проблемы с репликацией) как в итоге решил вопрос? Прописал хостнейм вместо айпишников?

Александр
07.08.2017
08:30:01
Зато у тебя были проблемы с репликацией) как в итоге решил вопрос? Прописал хостнейм вместо айпишников?
У меня была проблема с тем, что нода КХ биндилась на локальный хостнейм, а в конфиге были прописаны айпишники и из-за этого какая то фигня была в ЗК и самом КХ.

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

Google
Александр
07.08.2017
08:33:15
Была подобная проблема у Виталия Третьякова, но у него была проблема накапливания тасков репликации и мерджи проходили очень медленно. Прописывание хостнеймов в конфигах помогло решить проблему.

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