- 01 May 2017 (38 messages)
-
Joined.
-
Джентельмены, подскажие по запросу.
Уже все инторнеты перечитал
Есть такая табличка:
++++++++++++++++++++++++++++++++++++
+ F01-23 GigabitEthernet0/2/18 +
+ F01-32 GigabitEthernet1/2/4 +
+ F01-32 GigabitEthernet1/3/1 +
+ F01-32 GigabitEthernet1/3/1 +
+ F01-10 GigabitEthernet1/2/4 +
+ F01-37 GigabitEthernet0/2/17 +
++++++++++++++++++++++++++++++++++++
Хочется
name int count
+++++++++++++++++++++++++++++++++++++++
+ F01-23 + GigabitEthernet0/2/18 + 1 +
+ F01-32 + GigabitEthernet1/2/4 + 1 +
+ F01-32 + GigabitEthernet1/3/1 + 2 +
+ F01-10 + GigabitEthernet1/2/4 + 1 +
+ F01-37 + GigabitEthernet0/2/17 + 1 +
+++++++++++++++++++++++++++++++++++++++ -
-
-
Group by
-
-
-
-
несколько вопросов по tabix
-
где-то видел упоминание, что результат можно экспортнуть в CSV из интерфейса (пока не нашел)
-
и еще
-
все сохранения поисков и прочее персистенси где сохранятеся? Как я понял это полная статика?
-
Правой кнопкой по результату.
-
-
Посмотреть ошибки в дебаг консоли браузера для начала
-
-
-
Всем привет!
Запилил сборщик запросов к кликхаусу. Собирает мелкие запросы, собирает все это в большие и отправляет на разные инстансы.
Кому актуально, потестите пожалуйста и дайте обратную связь.
Интерфейс стандартный, поэтому можно стандартные адаптеры на него направлять.
https://github.com/nikepan/clickhouse-bulkGitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big insertsCollects many small inserts to ClickHouse and send in big inserts - GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts
-
ссылка на скомпиленный x64 https://www.dropbox.com/s/e99urgy3sx71f41/clickhouse-bulk-linux_64.tgz?dl=0clickhouse-bulk-linux_64.tgz
Shared with Dropbox
-
О, тру! Батчер!
-
А в каком формате принимает? Формат кликхауса съест?
-
-
-
добрый день
поставил через докер на маке, clickhouse-client подключается, но tabix - на тотже ip вроде как подключается, но ничего не показывает, как минимум список дб
в консоли у него Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
Где проблема? -
Сейчас задача gui подключить
-
убедитесь, что 8123 порт проброшен
-
-
сделал вируталку на aws, поставил все за пару минут )
открыл порты 8123, 9000, 9009
но по внешнему ip не подлючается, нет никаких доп настроек в кликхаусе? -
-
-
надо было <listen_host>::</listen_host> поставить
-
На маке докер в виртуалке. Точно на нужный ip коннектишься?
-
ошибка гдето там, но забил уже, развернул на aws за 15 мин, все работает
-
в докере много лишних телодвижений
-
над результатом справа кнопка типа логотип екселя, если мультизапросы - будет кнопка под каждый результат
-
пока все храниться в localStore браузера, история запросов в основном локально, но может "пытаться" хранить на сервере CH
Каждый запрос из tabix отправляется с признаком queryLog и с пометкой /*tabix_id...*/ далее интерфейс делает select querylog like ... -
Если вы собираете под себя - можете попробовать ветку b1 - до текущего коммита 7159bcad7cb015b586eed82b03a7a36eb4a6978a
поправил hotkey + другие фичи и фиксы в мастере будет +- через недельку
новые фичи:
- процесс лист кластера, а не одной машины
- метрики график - не рисовал нулевые значения
- hotkey checkbox - enable left
- линейные графики научились группироваться по строковым колонкам
- minor fixes -
Спасибо!
- 02 May 2017 (60 messages)
-
есть multicorn для sqlalchemy, возможно работает
http://multicorn.org/foreign-data-wrappers/#sqlalchemy-foreign-data-wrapper
https://github.com/cloudflare/sqlalchemy-clickhouseGitHub - cloudflare/sqlalchemy-clickhouseContribute to cloudflare/sqlalchemy-clickhouse development by creating an account on GitHub.
-
привет. столкнулся с проблемой: на локальных и distributed таблицах удалил три колонки, изменил запрос на импорт, но ругается на то, что этой колонки не существует:
Exception: Code: 10, e.displayText() = DB::Exception: Not found column utm_source in block. There are only columns: ..., e.what() = DB::Exception -
при этом вставляю с указанием колонок:
INSERT INTO clickstream (columns) FORMAT TSV
, и там utm_source нет -
можете подсказать, что с этим делать? проверил через desc table – таких колонок нет, пересоздал distributed-таблицу (импортирую всё через нее) – не помогло
-
Не уверен, но скорее всего дело в кэше зукипера - у меня подобная проблема была, когда после пересоздания таблицы не создавались записи эквивалентные тем, которые были в таблице до пересоздания.
Решил проблему переименованием пути до хранилища в зукипере -
не наблюдаю такой кнопки. Вижу только булавку "Pinned".
-
ui.tabix.io ?
-
https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#The+Data+Directory
Вот этот путь надо изменить? -
нет делал локальную инсталляцию
-
сильно отличаются версии между хостед и доступным на git релизами?
-
да на ui.tabix.io все это есть
-
а какая там версия?
-
сильно, я забываю собирать на github релизы, да и смысла в них не вижу т.к весь стейбл код лежит в мастере и скомпилин в папке build, а разработка идет в отдельных ветках.
Для самосборки используйте просто master ветку, ui.tabix.io это как раз автовыкладка master ветки -
спасибо
-
так и будем поступать
-
-
Извините, что поднимаю. Проблема выглядит серьезной, если я сам где-то не натупил. Костылить со сменой пути в зукипере не хочется.
-
-
-
"При использовании max_bytes_before_external_group_by рекомендуется выставить max_memory_usage примерно в два раза больше. Это следует сделать, потому что агрегация выполняется в две стадии: чтение и формирование промежуточных данных (1) и слияние промежуточных данных (2). Сброс данных на файловую систему может производиться только на стадии 1. Если сброса временных данных не было, то на стадии 2 может потребляться до такого же объёма памяти, как на стадии 1."
-
-
Может быть вам поможет OPTIMIZE FINAL.
"Если указан FINAL, то оптимизация будет производиться даже когда все данные уже лежат в одном куске." -
Хорошо. А его можно прописать в конфиге? в server.xml?
-
в users.xml:
<!-- Profiles of settings. -->
<profiles>
<!-- Default settings. -->
<default>
<!-- Maximum memory usage for processing single query, in bytes. -->
<max_memory_usage>20000000000</max_memory_usage>
<!-- Use cache of uncompressed blocks of data. Meaningful only for processing many of very short queries. -->
<use_uncompressed_cache>0</use_uncompressed_cache>
<!-- How to choose between replicas during distributed query processing.
random - choose random replica from set of replicas with minimum number of errors
nearest_hostname - from set of replicas with minimum number of errors, choose replica
with minumum number of different symbols between replica's hostname and local hostname
(Hamming distance).
in_order - first live replica is choosen in specified order.
-->
<load_balancing>random</load_balancing>
</default>
<!-- Profile that allows only read queries. -->
<readonly>
<readonly>1</readonly>
</readonly>
</profiles> -
OPTIMIZE FINAL имеет смысл делать либо если вы добавили новую колонку и хоитите матереализовать ее на диске, либо если вы используете какой-нибудь экзотический движок типа GraphiteMergeTree.
Если у вас много данных, а OPTIMIZE отрабатывает быстро, то это говорит о том что оптимизации (мержи) просто не назначаются ввиду ограничений в настройках <merge_tree></merge_tree>.
Так по-умолчанию мержи не назначаются если размер наибольшего куска больше max_bytes_to_merge_at_max_space_in_pool=100GB. -
А можете где-нибудь (например в GitHub issues https://github.com/yandex/ClickHouse/issues/new) описать проблему чуть подробнее?
Для начала стектрейс ошибки был бы очень полезен.Build software better, togetherGitHub is where people build software. More than 28 million people use GitHub to discover, fork, and contribute to over 85 million projects.
-
Спасибо. Создал: https://github.com/yandex/ClickHouse/issues/752Column not found error · Issue #752 · yandex/ClickHouse
We have distributed table clickstream and 6 nodes (3 shards x 2 replicas) with local tables. I removed columns utm_source, utm_medium, utm_campaign both from distributed and local tables and change...
-
У вас случаем нет MaterializedView "смотрящих" на измененные таблицы?
-
есть только обычные View
-
но я их удалил (не особо нужны), и всё заработало
-
спасибо!
-
-
Добрый день! Скажите, есть ли смысл создавать дополнительные хэш столбцы для строковых столбцов, по которым идет группировка? Например, есть колонка col String, стоит ли создать colhash uint64 default siphash64(col) а затем делать group by colhash, col. Сделает ли это запрос быстрее или может наоборот?
-
-
Спасибо за полный ответ!
-
-
clickhouse-local?
-
-
-
-
вот тут можно почерпнуть некоторые идеи https://t.co/VNr3Fwj9Mx
-
Для истории: как по-простому позапрашивать из многомногомногоколоночного CSV: cat gl.csv | clickhouse-local -S "`head -n 1 gl.csv | sed -e 's/\"/\n/g' | sed -e 's/,/ String,/g' | tr --delete '\n' | sed 's/.*/\0 String/'`" --input-format=CSV -q "select count(*) from table where message = 'SearchResult' limit 10" #faq
-
Добрый вечер. Прошу подсказать. Есть таблица A (35М строк, MEMORY) и таблица B (100M строк, MergeTree) обе имеют столбец column. Хочу создать селект значений column, которые содержатся в A но не содержатся в B, другими словами вычесть из множества A множество B. Есть идеи как лучше реализовать и при этом не получить ошибку 'Cannon allocate memory' при джоине? :)
-
Попробуйте через два join-а: https://groups.google.com/d/msg/clickhouse/-2S1IRtAKq8/fujUMoCYAgAJ . Хотя у вас таблицы имеют близкий размер, может и не помочь.Google Groups
Google Groups allows you to create and participate in online forums and email-based groups with a rich experience for community conversations.
-
А значения уникальные?
-
-
Joined.
-
Всем привет. Последнюю неделю потихоньку провожу тестирование CH. Постоянно "глаз цепляется" за
-
-
Движок MergeTree поддерживает индекс по первичному ключу и по дате, и обеспечивает возможность обновления данных в реальном времени.
-
И вопрос знатокам: Кто ? Кого и главное когда, обновляет?
-
имеется ввиду, что в этом движке не нужно ждать каких-то слияний или еще чего
-
залили данные и они сразу доступны
-
но про апдейты - забудьте )
-
ну вот, как все скучно и быстро выяснилось
-
кто нибудь пробовал держать много данных в одной партиции ? без разделения лога по датам? вопрос относительно ReplacingMergeTree
-
Вопрос к Сore разработчикам, может он покажется глупым - заранее сорри, но очень давно хотел спросить, много работаем с Collapsing и каждый раз возникает мысль, а если передавать поле NULL для обновляемой записи - то можно схлопывать: "значение" + NULL = "как значение".
Поясню идею - допустим мы пишем действия пользователей на страницы - там передается Date+VisitID + UserAgent + URL_Referer + Время пользователя на странице -> сейчас мы это все храним в нашем ETL в памяти UserAgent+URL_Referer ради обновления "времени на странице".
А если хранить только Date+VisitID, а в поле UserAgent + URL_Referer передавать NULL и надеяться на то - что Collapsing схлопнет их и сохранит _любое_ не NULL значение.
ИМХО это бы решило много проблем... Это теоритически вообще возможно такое поведение или я сильно заблуждаюсь ? -
-
-
- 03 May 2017 (51 messages)
-
Может вам агрегирующий двиг попробовать?
-
16 мая состоится митап в Екатеринбурге:
https://events.yandex.ru/events/meetings/16-may-2017/
Если вы рядом - регистрируйтесь, приглашайте друзей. Будет интересно :)ClickHouse Meetup, 16 мая 2017, Екатеринбург — События ЯндексаСобытия — вся информация о конференциях, школах, семинарах и других мероприятиях Яндекса — как прошедших, так и предстоящих.
-
похоже без трансляции и записи
-
Насколько я знаю - да.
-
Я немножко поэкспериментировал с созданем таблиц на оснвании ReplicatedReplacingMergeTree и обнаружил, что для каждой таблицы с этим движком выделяется 6 потоков. Хотелось бы узнать это нормальное поведение? И если да, то почему так, для чего это делается? Вопрос скорее к разработчикам @milovidov_an
-
я не разработчик, но чтоб понять ваше беспокойства (планирую использовать тот же тип движка) несколько уточняющих вопросов к вам:
1. Для других типов (например просто ReplicatedMergeTree) сколько выделяется потоков?
2. Даже если потоков больше на 1-2 (возможно нужны для поиска повторов или еще чего-то) считаете ли вы это проблемой? Или это скорее просто любопытсво по внутреннему стройству движков? -
1. Для ReplicatedMergeTree выделяется тоже 6 потоков. Для остальных типов не смотрел.
2. Да, к сожалению для нас это проблема, т.к. у нас создается достаточно много таблиц и кликхаус отваливается, так как ему не хватает потоков, поэтому и хотелось бы узнать почему это так :) -
Всем привет. Назрел вопрос по индексам в мердж три.
Я так понимаю они не работают по отдельности? А работают потипу как партишен кей в кассандре?
Что бы всё работало верно - надо указывать в правильном порядке?
Т.к. есть к примеру CampID, я вношу его в индекс после EventDate и когда делаю выборку по нему - всё равно клик хаус проходит через всез записи в базе -
-
-
-
Или тут на англ:
https://medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324ClickHouse Primary KeysRecently I dived deep into ClickHouse. ClickHouse is column-store database by Yandex with great performance for analytical queries. For…
-
с учетом того, что CH колоночная БД, есть ощущение, что вы как-то не так пытаетесь его использовать (я про очень большое кол-во таблиц)
-
стараются делать одну большую (разряженную) таблицу
-
-
Я понимаю о чем вы, но сейчас у нас такое решение и по-другому пока не очень получается развернуть систему(в виду определнных ограничений)
-
-
-
-
-
Joined.
-
Стоит проверить совпадают ли колонки у Distributed и у табличек на которые она смотрит.
-
Можно динамически без конфигов менять размер пула
-
Естессно, создавались через AS
-
-
В каком смысле?
-
-
-
тоже хейтите яву?)
-
-
вот если бы разработчики провоидили какой-нибудь опрос/голосование, то я бы поставил пункт "избавиться от zookeeper" в последним в списке! Тем более если он работает и выполняет свои функции.
-
есть множество более других вещей, которые нужно делать
-
но хорошо, что разработчики делают то, что реально востребованно и не реагируют особо на такие хейтерские запросы
-
-
haters must hate :)
-
+1 за zetcd
-
-
Scylladb хвастаются своим решением на задаче которая (кажется) хорошо ложится на кликхаус. Может получится пост для топа hacker news если сравнить два решения по скорости/цене/простоте. http://www.scylladb.com/2017/05/02/analyzing-flight-delays-scylla-spark/Analyzing flight delays with Scylla on top of Spark
We analyzed flight delays to demonstrate how to use Spark Scala API with Scylla to get instant results.
-
сцилла это а-ля кассандра
-
Да, но задача вроде sql ем решается тоже, если есть поддержка group by :)
-
там, думаю, все-таки на порядок ниже производительность будет. все это дело должно выгрузиться целиком из сциллы, пройти через внешний обработчик, который вероятнее всего обрабатывает записи построчно, и там сгруппироваться. насколько помню, КХ очень агрессивно юзает обработку массивами (и, скорее всего, оттуда и все использования SSE), и здесь будет сложно добиться каких-то аналогичных результатов с выгрузкой по сетке и обработкой каждой записи отдельно.
-
видимо речь шла сначала сконвертировать данные в кх а потом уже посчитать его средствами
-
они там еще и в докере все сделали. хипстеры какие-то
-
-
-
Именно, сравнить решения одной задачи: Посчитать средние задержки рейсовом имея на руках исходный csv
-
-
Вот вот, можно смело писать clickbait заголовок и лететь в топ :)
-
-
Нет, никакого раздражения не вызывает
-
Joined.
- 04 May 2017 (147 messages)
-
-
Добрый день. Сlickhouse не собирается на FreeBSD 11-STABLE
-
-
/tmp/usr/ports/databases/clickhouse/work/ClickHouse-1.1.54214-testing/dbms/src/AggregateFunctions/AggregateFunctionSequenceMatch.h:306:32: error: no matching member function for call to 'ignore'
if (special_open_p.ignore(pos, end))
~~~~~~~~~~~~~~~^~~~~~
/tmp/usr/ports/databases/clickhouse/work/ClickHouse-1.1.54214-testing/dbms/src/Parsers/IParser.h:43:10: note: candidate function not viable: no known conversion from 'char *' to 'Pos &' (aka 'const char *&') for 1st argument
bool ignore(Pos & pos, Pos end)
^ -
Порты в tmp это солидно
-
ошибка известна, полный лог такой http://beefy12.nyi.freebsd.org/data/head-amd64-default/p439918_s317660/logs/clickhouse-1.1.54214.log
-
Joined.
-
-
Не открывается
-
Joined.
-
-
Joined.
-
Всем привет!)
-
У кого-нибудь есть свежий clickhouse-jdbc?
-
Или как его собрать со всеми зависимостями под виндовс?
-
-
Спасибо
-
Всем доброго дня! А кто-то настраивал чере jdbc-драйвер, отображение, скажем, в DataGrip?
-
В DBeaver все прекрасно работает)
-
-
-
Ага, то есть возможно! Спасибо, буду пробовать
-
-
-
А где взять версию скомпилированную со всеми зависимостями?
-
-
-
Там же мавен все сам установит
-
-
собирать через maven или maven2?
-
-
-
-
-
-
При попытке добавления в datagrip падает с ошибкой:
java.lang.RuntimeException: ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 46, host: 127.0.0.1, port: 8123; Code: 46, e.displayText() = DB::Exception: Unknown function timezone, e.what() = DB::Exception -
никто не сталкивался с такой проблемой?
-
-
-
я взял последний код из гитхаба
-
а не подскажете, как в той же Datagrip заэкранировать ? в тернарном операторе, чтобы IDE не просила туда значение параметра подставить?
-
-
логично, спасибо
-
-
Посмотрел код. Такое поведение возникает если в подключении указана настройка use_server_time_zone
-
спасибо, гляну
-
-
а что конкретно надо? есть штукенция нечто web pivot builder, недавно добавили коннектор к CH и даже вроде как все работает. Кто желает поэкспериментировать велкам в личку.
-
да по сути и нужен pivot с drag & drop и прочими плюшками. Менеджерам что угодно, лишь бы SQL не учить)
-
Да, помогло, спасибо! Подключиться получилось, список таблиц виден, но при попытке просмотреть какую-либо из них получаю ошибку:
[62] ClickHouse exception, code: 62, host: 127.0.0.1, port: 8123; Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 17: "default".ib_log t FORMAT TabSeparatedWithNamesAndTypes;, expected identifier, e.what() = DB::Exception java.lang.Throwable: Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 17: "default".ib_log t FORMAT TabSeparatedWithNamesAndTypes;, expected identifier, e.what() = DB::Exception -
-
это jdbc драйвер так поставляет
-
-
-
-
ок, буду смотреть в настройках
-
Дело не в настройках https://github.com/yandex/clickhouse-jdbc/issues/91Table select doesn't work in JetBrains IDE · Issue #91 · yandex/clickhouse-jdbc
I successfully compiled last master and installed it in PyCharm settings. Connection is OK, I see schema, databases, tables and there fields. Queries to ClickHouse via query interface work fine. Bu...
-
-
-
да, с запросом руками все ОК :)
-
-
Подскажите, что я делаю не так с Enum
CREATE TABLE model.x11 (
site_id Int32,
type Enum8('normal' = 1, 'bad' = 2)
) ENGINE = Log;
INSERT INTO model.x11
SELECT toInt32(123) as site_id,'normal' as type
>> DB::Exception: Type mismatch for column type. Column has type Enum8('normal' = 1, 'bad' = 2), got type String -
https://github.com/yandex/ClickHouse/issues/215
там какая-то движуха вон недавно была, может в новых версиях исправленоCannot insert a human-readable Enum value using INSERT INTO .. SELECT #215An example table: :) CREATE TABLE events ( type Enum8('session' = 1, 'pageview' = 2, 'click' = 3), date Date, id UInt64 ) ENGINE = MergeTree(date, (type, date, id), 8192); Ok. 0 rows in set. Elapsed: 0.008 sec. Adding the data from anoth...
-
Добрый день
Проектирую систему аналитики, похожую на метрику
Т.е. фиксируются все клики и собираются около 70 параметров по ним.
Часть кликов будет помечена как конверсионные
Задача - строить различные отчеты по группе параметров и дате. Как в метрике.
Планируется 1 млрд кликов в год и пиковая нагрузка 1000rps на запись в эту таблицу.
Вопросы:
1. Все 70 параметров помещать в одну таблицу или разбивать на важные и не важные
2. Стоит ли разбивать таблицу по проектно,по счетчикам если брать за пример метрику
3. Какие параметры сервера нужны под такие требования? -
Спасибо)
-
заливайте данные в метрику, деньги поделим.
-
-
понятно, а по первым двум вопросам что можете посоветовать?
-
1. Все 70 параметров помещать в одну таблицу или разбивать на важные и не важные
2. Стоит ли разбивать таблицу по проектно,по счетчикам если брать за пример метрику
- Пишите в одну таблицу в кластер ReplicatedMergeTree
- Жмите если возможно поля через cityHash64(user_id_hash) для экономии места
- 70 параметров и млрд кликов в год - не много -> не стоит дробить -
а под такой объем данных можете назвать необходимый RAM и проц и место на диске? Понятно что чем больше тем лучше, но хотелось оптимальный вариант
-
чтобы от чегото отталкиваться
-
-
» 70 параметров и млрд кликов в год - не много -> не стоит дробить
О, а тут имеется ввиду сделать какое-то поле fake_date MATERIALIZED toDate(0),
и делать MergeTree(fake_date, ...) ? -
ок, спасибо
-
если чуть более серьезно, то
- с точки зрения использования одна таблица с 70 параметрами работает нормально, если они фиксированной или ограниченной не очень большой длины,
- со стороны чтения удобно ходить в одну distributed таблицу, которая до некоторой степени абстрагирует логику шардирования.
- если соберетесь шардировать, у вас будет несколько вариантов со своими плюсами и минусами, по времени, по клиентам, по кликам..
- в простом случае ключ, судя по всему, у вас начинается с даты и клиента, это хорошо.
- 1 ярд событий, если они даже по килобайту это 1Тб в год, т.е. по диску вам больше одной машины не надо, из тех же соображений, вставка 1Мб/с не ограничена производительностью этой машины. при желании вы эти данные вообще можете в памяти держать. реплицировать, конечно же, нужно.
- если вы будете апдейтить клики, то ваша работа станет чуть менее удобной, хотя и более гибкой.
- по железу отталкивайтесь от чего угодно, поднимите виртуалку например, сгенерите случайные данные, посмотрите получаемую скорость, возможно вам уже будет достаточно. у нас тут люди запускаются на машинах от 200Гб до кофеварок с 1-2Гб. подходящая конфигурация может зависеть от количества одновременных запросов, от типового размера данных, от желаемого времени ответа итд. -
понятно, радует что все одной таблице
-
-
-
-
-
-
-
-
-
-
-
/stat@combot
-
Joined.
-
Есть новости по update/delete?
-
Обязательно ли соблюдение порядка столбцов в таблицах MergeTree при выборке через Distributed?
-
делит возможен, но только помесячно
-
а вот кстати, все меня глодал вопрос
-
удаление по месяцу, но строится все на типе Date
-
почему тогда не по дням?
-
почему партиции привязаны к месяцу?
-
вот сделют произвольное партицирование, все будет )
-
вопрос только - когда
-
захардкодили, а перекомпилировать долго. это же си
-
-
это шутка такая?
-
-
а есть, кстати, кошелек / счет куда можно закинуть деньгу на развитие проекта?
-
я, конечно, понимаю, что у Яндекса и без моей мелочи денег предостаточно, но имхо, это вполне неплохой способ приоретизации фич. авторы всегда могут отдать их куда-то/кому-то
-
в конце-концов, 90% тут колотит/экономит неиллюзорное бабло на CH вполне себе откровенно
-
-
SL3?
-
простите, я не знаю что это :(
-
-
круто! ждем цен :) у меня личный интерес, не от компании, сильно золотых гор обещать не могу
-
Joined.
-
Хмм... Интересно, зачем колоночная высокопроизводительная БД может понадобиться для личного интереса?
-
Можете попробовать собрать master/ последний коммит?
только если соберется - это сосвсем будет нестабильная версия, ее лучше не использовать -
-
Чтобы в конце-концов, колотить/экономить неиллюзорное бабло на CH и вполне себе откровенно
-
Наверное просто потому, что хочется сказать спасибо чем-то большим чем стакан пива разработчикам?
-
а я упор на "личная" просто потому, что я рядовой инженер и не имею права публично говорить что-то от лица работодателя. сугубо legal оговорка в публичном общении.
-
всякие pet project и личные интересы разные бывают, сейчас в интернетах можно много чего пособирать-поанализировать. ну и всякие датчики, логи и прочие данные с кофеварок-холодильников...
-
именно так, у меня pet проект - https://github.com/pavel-odintsov/fastnetmonGitHub - pavel-odintsov/fastnetmon: FastNetMon - very fast DDoS sensor with sFlow/Netflow/IPFIX/SPAN support
FastNetMon - very fast DDoS sensor with sFlow/Netflow/IPFIX/SPAN support - GitHub - pavel-odintsov/fastnetmon: FastNetMon - very fast DDoS sensor with sFlow/Netflow/IPFIX/SPAN support
-
-
Ну да, моя кофеварка где-то ярд логов генерирует за месяц
-
на самом деле, с учетом clickhouse-local, вполне допускаю использование clickhouse где-то рядом с sqlite, т.е. для личных хобби проектов вполне себе
-
и дело не только в объемах обрабатываемых данных
-
просто удобно и привычно может быть
-
-
основа умного дома и интернета вещей - да!
-
-
-
-
-
"мы им посылаем сигналы, а они под это танцуют и называют дабстеп"
-
Собираю с последним коммитом. Теперь ошибка в другом месте
-
-
/tmp/usr/ports/databases/clickhouse/work/ClickHouse-1.1.54214-testing/dbms/src/Storages/ColumnsDescription.cpp:110:32: error: non-const lvalue reference to type 'Pos' (aka 'const char *') cannot bind to a value of unrelated type 'char *'
if (!expr_parser.parse(begin, end, default_expr, max_parsed_pos, expected))
^~~~~
/tmp/usr/ports/databases/clickhouse/work/ClickHouse-1.1.54214-testing/dbms/src/Parsers/IParserBase.h:14:22: note: passing argument to parameter 'pos' here
bool parse(Pos & pos, Pos end, ASTPtr & node, Pos & max_parsed_pos, Expected & expected);
^
1 error generated.
*** [dbms/CMakeFiles/dbms.dir/src/Storages/ColumnsDescription.cpp.o] Error code 1 -
-
@prll: Можно будет обращаться по вопросам clickouse ? Хочу добавить функции для работы с MAC адресами.
-
-
Плюс за маки)
-
планируются функции, аналогичные IPv4NumToString(num) и IPv4StringToNum(s)
-
только с Uint64
-
ну и вытягивание vendor oui
-
для начала, хотелось бы просто собрать clickhouse :)
-
вы имеете в виду кусок мака или словарь на базе oui.txt?
-
кусок MAC'а
-
первые три октета
-
А нету ли секретного range_hashed layout-a для словарей, в котором бы в качестве min/max можно было бы не только даты использовать, но и числовые типы?
-
постараюсь завтра сделать фикс, уже в виртуалке варится..
-
заранее спасибо
- 05 May 2017 (52 messages)
-
-
-
-
-
-
-
-
-
-
Скажите пожалуйста в clickhouse вначале select отрабатывает а потом where?
-
select
concat('435', toString(country)) as country_test
from
banner_history_segments
where
country_test = '435BLR'
limit
100 -
в базе есть толко Country = 'BLR' ('435BLR' нет), а он находит и выводит 100 строк
-
Joined.
-
можно считать, что все определенные алиасы подставляются в места использования, потом запрос исполняется.
-
то есть все таки кликхаус работает по другому в отличии от mysql. вначале селект потом where, т.к. в mysql наоборот
-
или это только с алиасами такое поведение?
-
where с алиасами работает как с оригинальными полями таблицы
-
-
-
-
но утверждение что вначале select а потом where верно? то есть поведение оличное от mysql
-
-
пример выше скинул
-
-
я вообще не представляю как бы кликхаус работал, если бы он сначала выгребал петабайты данных
-
нет, считайте что ваш запрос
select
concat('435', toString(country)) as country_test
from
banner_history_segments
where
concat('435', toString(country)) = '435BLR'
limit
100 -
а потом накладывал where =)
-
то есть нужно называть алиас не так как оригинальная колонка
-
да, это обычно заканчивается плохо.
-
СПАСИБО!)
-
-
-
-
-
650 членов )
-
-
-
-
-
-
Коллеги, а неужели никто не хочет подать доклад на РИТ?
-
ни одного доклада в заявках не вижу
-
Можно подать доклад. Пока ещё никто не обращался. Времени немного осталось - ещё надо посмотреть, не пересечётся ли с какими-то другими мероприятиями. Организаторы заинтересованы в нашем докладе?
-
да, конечно!
-
подавай
-
Хорошо - сейчас сориентируюсь по расписанию...
-
Joined.
-
-
-
Пока что нет, но запросов много. Поищи на github таск, или создай
-
-
- 06 May 2017 (15 messages)
-
-
-
Joined.
-
Нет, сейчас нельзя. Самому часто нужна такая возможность и приходится использовать временную таблицу.
-
За этот реквест можно где-нибудь проголосовать?
-
-
И в эту же тему вопрос — сейчас на сервер КХ можно подложить CSV/TSV с тем чтобы потом сделать select * from "этот csv/tsv"? Как я понял локальный КХ это умеет. А серверный КХ?
-
В плюсах вообще не секу.
-
Вообще кто-нибудь из-вне пробовал коммититить в код КХ? Там сильно запутанная кодовая база?
-
я тоже не секу, но код клёвый, в целом понятно
-
с какой целью изучали? понять как оно работает "под капотом"? или искали скрытые фичи? :)
-
-
Для девелоперов есть дока
https://github.com/yandex/ClickHouse/blob/master/doc/developers/architecture.mdyandex/ClickHouseClickHouse is a free analytic DBMS for big data.
-
Тоже умеет. Движок таблиц File.
-
Спасибо. А он при чтении лочит файлы-источники? Если нет, то его же можно для импорта использовать на стороне сервера?
- 07 May 2017 (10 messages)
-
Насколько я помню, не лочит. Да, можно использовать для импорта - подложить файл и Insert select. Преимущества перед запуском clickhouse-client для импорта локально на сервере - нет.
-
Joined.
-
Joined.
-
Joined.
-
Надо сначала схему ему дать, а там как обычно все
-
-
@milovidov_an Алексей, подскажите, пожалуйста, сделать публичный ишью-трекер все еще планируется?
-
альтернатива тому что есть на гитхабе?
-
Я не в курсе какой статус у гитхаба. Мой вопрос об актуальном списке планируемых доработок и о текущей работе, список зареганных багов.
-
Да, планируется публичный трекер. По крайней мере нам его обещали сделать.
- 08 May 2017 (110 messages)
-
-
-
-
-
-
-
-
-
-
Это нормально. Сам исполняемый файл clickhouse имеет размер чуть больше 500 MB. Из этого большая часть - отладочная информация. Без неё в районе 150 MB.
Остальное - всякие тестовые программы, каждая из которых содержит (статически линкует) тот же код.
При сборке .deb пакетов сейчас сделано так, что отладочная информация идёт отдельно (в отдельном -dbg пакете, который можно не устанавливать).
Чтобы ускорить линковку тестовых программ и уменьшить место, которое для них требуется, есть возможность включить опцию динамической линковки со своими библиотеками. Также тестовые программы можно не собирать (скорее всего, они вам не нужны). Для этого, пишите make clickhouse вместо make.
Размер кода в районе 150 MB получается из-за большого количества инстанцирований шаблонов. -
-
=> вопрос: можно ли в перспективе ожидать какой-то MemoryMergeTree или какой-то параметр для придудительного удержания в памяти части MergeTree? Судя по google.groups, не только у меня такая задача.
-
Пока не планировали. Может быть будет как-то согласовываться с задачей про кэширование промежуточных результатов выполнения запроса.
-
-
-
-
-
@prill: Добрый день. Сделал pull request
-
-
-
-
я создавал когда-то баг https://github.com/yandex/ClickHouse/issues/390, по нему есть коммит, но не понятно до конца как это сейчас работаетPosition arguments in insert · Issue #390 · yandex/ClickHouse
It seems like a bug to me. I assume position arguments in INSERT FROM SELECT statement should work. to reproduce: ClickHouse client version 1.1.54134. Connecting to localhost:9000. Connected to Cli...
-
-
-
-
-
-
-
-
-
-
-
-
-
Position arguments in insert · Issue #390 · yandex/ClickHouse
It seems like a bug to me. I assume position arguments in INSERT FROM SELECT statement should work. to reproduce: ClickHouse client version 1.1.54134. Connecting to localhost:9000. Connected to Cli...
-
-
=)) я похоже запустил clickhouse вместе с zetcd
https://gist.github.com/Slach/7d2e15fea5485e42a805c3fb73840c63 -
-
Добрый день, подскажите может есть какие-то инструменты для умных миграций бд? для билдирования версионности. хотим использовать liquibase (у нас 2 типа бд - mysql и clickhouse). че делать? может кто сталкивался
-
Ликвибейс не подойдет, так как апдейтов в кликхаусе нет
-
Ликвибейс в своих системных таблицах хранит инфу, обновляет
-
а что использовать то?
-
Репликацию проверю напишу
-
собственные инструменты?)
-
у нас задача такая. мы делаем правки на ui (php) вносим изменения в бд (в два типа бд). Миграции собираются и во время билда группируются. другая команда платформа (java) эти миграции может легко выполнить откатить на своем дев сервере)
-
-
-
опиши подробнее плиз. пока не понимаю
-
вникнуть в принцип работы подобных решений, и придумать свое решние для работы с CH и MySQL
-
как тут еще подробней описать
-
у СМИ2 упоминалось их собственное решение по миграции CH на PHP
-
тут дело не в самих миграциях а в том что те миграции которые реализованы сми2 или laravel php они как обертка orm исполняются через php. а java разрабы не будет ставить себе php им нужен какой-то инструмент чтобы накатить и откатиь миграции
-
ликвибейс как замена php шным миграциям. но нету кх. в общем надо думать я так понял никто такого не реализовывал
-
я сейчас костылю свою балалайку
-
по мотивам sqitch на базе ansible
-
но есть ощущение, что что зря так сделал
-
надо будет выносить на что-то более независимое
-
удобная штука
-
в логах множество записей вида:
2017.05.08 18:52:27.437686 [ 52 ] <Warning> mprobe.sccp_msu_sharded (StorageReplicatedMergeTree, CleanupThread): Couldn't remove 20170508_20170508_4220883_4220883_0 from ZooKeeper: no node
Есть предположение от чего такое? что нужно с этим делать? -
-
смысл в том чтобы наши миграции были единные. они захотели удалить поле - взяли миграцию создали запушили. мы её взяли и забрали и тоже выполнили на своей базы + своя миграция. единная миграционная система двух команд
-
-
хз. буду думать
-
MapD Open Sources GPU-Powered Database | OmniSci
Since starting work on MapD more than five years ago while taking a database course at MIT, I had always dreamed of making the project open source. It is thus with great pleasure to announce that today our company is open sourcing the MapD Core database and associated visualization libraries, effective immediately.
-
это реклама новой базы данных?) или что это - можно кратко посмотрел не понял
-
@milovidov_an Добрый вечер. Я вижу, Вы смотрели pull request. Там все нормально ?
-
-
быстрее чем кх ? )
-
-
Summary of the 1.1 Billion Taxi Rides Benchmarks
Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...
-
Joined.
-
не успели с кх поработать а тут уже MapD ))
-
-
Сейчас придут ребята с яндекс и забанят всех ))
-
Mapd это не новая технология. Ничего удивительного нет, если хранить данные в памяти gpu.
-
круто. но мы только вот вот переезжаем на прод кликхаус пока переписывали часть функционала
-
а вы тут со своим mapd )) может когда нибудь )))
-
я так понимаю через GPU это нехилые сервера нужны
-
-
я в плане дороговизны обработки через gpu
-
такие машинки не дешевые
-
для них нужны гпу по цене нехилых серверов)
-
-
намного дороже чисто процессорной обработки
-
если уже и переходить то из-за безысходности
-
осталось еще сюда цену mapd прибавить
-
-
и там он на теслах гоняет
-
которые по 800 тысяч руб стоят
-
за карточку
-
400-800
-
-
так у него там не одна карточка
-
если что )
-
-
а 8
-
-
-
подозреваю что цена мапд
-
будет как 20 серверов )
-
как я понимаю mapd distributed вообще только появился (3.0) ? т.е. до этого было single machine
-
и вообще доступен только в их enterprise версии
-
But having said that, Mostak was willing to put some error bars on the top-end price. On a system with eight Tesla K80s, which might cost somewhere between $60,000 to $70,000, the license for the MapD stack would be “a small multiple” of this hardware cost.
-
-
а он с юмором
-
ыыыыы, звучит как отличный бизнес-план!
-
Я в статье описал концепцию с миграциями, и открыл наш тулл для миграции - он не доделан но вполне рабочий... мы им пользуемся в проде.
Он очень похож на анзибл и д.р инструменты, знаний php там не требуется, в git лежат правила.
Каждое правило состоит из sql's которые накатываем и с список которые откатываем.
php самый минимум в правилах/рецептах.
Сейчас доработка не планируется - т.к ждем из коробки решения в самом CH -
Только 5 минут посмотрел. Всё ок, но нужна пара мелких исправлений. Наверное сам доведу, или коллега, на которого это назначено.
-
Joined.
-
Hey
- 09 May 2017 (63 messages)
-
Joined.
-
что-то не работает и по-разному, когда я переставляю колонки. в старой версии.
-
-
-
-
всем привет
объясните за тему макросов??
https://clickhouse.yandex/reference_ru.html#Creating%20replicated%20tables ?
можно ли все таки вместо имени реплики и id шарда что то использовать кроме как определять macros в каждом отдельном конфиге для каждого сервера?Документация ClickHouse | Документация ClickHouseClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
-
-
уточню вопрос, то что хочется уникальный путь в пределах шарда, это понятно
но может просто можно этот самый {shard} не из макросов брать? а через какой нибудь запрос из SELECT shard_id FROM system.clusters ?? -
Всё равно же придётся на основании чего-то вычислять номер шарда для конкретного хоста. Можно например на основании хостнейма. То есть получается что-то вроде ReplicatedMergeTree(concat('/clickhouse/tables/', someFunction(hostName()), '/table'), ...). Вы о таком говорите?
-
-
да, я об этом говорю
-
а нельзя как то macros.xml
например сделать шаблоном? чтобы можно было например там значения переменных окружения использовать??
очень не хочется городить свой docker образ поверх стандартного -
Алекс =) кстати мы с вами будет похоже вместе на clickhouse вопросы на stackoverflow отвечать =) я там подписался, чтобы доку чаще перечитывать, отвечая людям
-
-
-
а у вас там просто свой тег или отдельно как-то под проект получили свое место там?
-
-
Newest 'clickhouse' Questions
Stack Overflow | The World’s Largest Online Community for Developers
-
странно а почему не работают подстановки?
в /etc/clickhouse-server/config.xml
стоит
<macros incl="macros" optional="true"/>
делаю
/etc/clickhouse-server/macros.xml
<?xml version="1.0"?><macros><shard>ru</shard><replica>clickhouse-ru-1.local</replica></macros>
а в config-preprocessed.xml
получаю вместо macros пустоту
почему? -
-
спасибо
заработало
но почему то падает при создании таблицы
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.661461 [ 5 ] <Debug> ga2clickhouse.hits_replicated (StorageReplicatedMergeTree): Creating table /clickhouse/tables/us/hits
clickhouse-us-1.local_1 | /home/robot-metrika-test/jenkins/workspace/clickhouse-packages-build@2/sources/contrib/libtcmalloc/src/tcmalloc.cc:286] Attempt to free invalid pointer 0x7f127c972b60
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.665835 [ 9 ] <Error> BaseDaemon: ########################################
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.666192 [ 9 ] <Error> BaseDaemon: (from thread 8) Received signal Aborted (6).
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.668073 [ 9 ] <Error> BaseDaemon: 1. /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38) [0x7f127ee0e428]
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.668207 [ 9 ] <Error> BaseDaemon: 2. /usr/bin/clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x33fb245]
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.668220 [ 9 ] <Error> BaseDaemon: 3. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f127f8be6ba]
clickhouse-us-1.local_1 | 2017.05.09 13:34:59.668224 [ 9 ] <Error> BaseDaemon: 4. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f127eedf82d]
clickhouse-us-1.local_1 | Aborted (core dumped) -
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/hits', '{replica}', date, cityHash64( userId), (trackerId, date, cityHash64(userId), timestamp), 8192)
вот такое пытался создать -
1.1.54198
версия сервера -
Ужас какой. А так падает только при создании replicated таблиц с макросами/любых replicated таблиц/любых merge tree таблиц? Образ - официальный yandex/clickhouse-server? Ещё интересен конфиг docker-compose (через него же запускаете?) и полный CREATE TABLE. Ещё круто было бы достать core-файл и снять с него бэктрейс.
-
-
Да сейчас попробую все достать и сделать issue
-
Возможно памяти не хватает в докере просто там 8 контейнеров в 2gb
-
Ну и я это дело пытаюсь с zetcd запустить вместо zookeeper
-
-
-
Кажется что оно про разное совсем. Друид это в основном агрегатор, притом с отвратительным сообществом
-
-
-
-
-
Совсем
-
-
-
-
Всем привет! Подскажите, пожалуйста - а КХ читает все колонки, которые в подзапросе указаны?
К примеру, select date,event,count() from (select date,event,url) as t group by date,event;
В данном случае колонка url не нужна, будет ли она все-таки прочитана? Судя по тестам - да, она читается. Хотелось бы просто уточнить этот момент. Благодарю. -
-
Joined.
-
Народ, а где core dumps для КХ создаются?
-
Спасибо будем думать
-
Это зависит от настроек ядра - понять можно командой cat /proc/sys/kernel/core_pattern
-
|/usr/share/apport/apport %p %s %c %P
и куда смотреть? -
Хм. Вот тут пишут, что core_pattern на контейнер установить нельзя: http://stackoverflow.com/questions/39136601/changing-proc-sys-kernel-core-pattern-file-inside-docker-container Соответственно он взялся из хост-системы. Такой паттерн значит, что запускается программа apport и core-файл отправляется на её стандартный вход. Поскольку в контейнере она не установлена, видимо core-файл потерян.Changing /proc/sys/kernel/core_pattern file inside docker container
How can i change /proc/sys/kernel/core_pattern file inside the docker container with out privileged mode? Are there any flags to be passed to docker daemon or docker run or anything related to Dock...
-
а я сейчас попробую это сейчас исправить
так, обычные MergeTree создаются нормально
падает только на ReplicatedMergeTree ...
сейчас попробую запрос упростить как можно сильнее -
а я сейчас попробую это сейчас исправить
-
так дело точно не в кол-ве свободной памяти
-
щас попробую zetcd на zookeper заменить
-
Я в статье коротко описал сравнение https://m.habrahabr.ru/company/smi2/blog/314558/Как запустить ClickHouse своими силами и выиграть джекпот
Мы решили описать простой и проверенный путь для тех, кто хочет внедрить аналитическую СУБД ClickHouse своими силами или просто испробовать ClickHouse на...
-
да, проблема в zetcd
=( рано я вчера порадовался -
-
щас посмотрим что там по сети ходит... интересно же
никто случайно для wireshark не подскажет нормального анализитора пакетов для zookeeper protocol ?? -
сходу такой не гуглится
можно исходники клиентов посмотреть
http://www.arinkverma.in/2013/05/understanding-zookeeper-protocols.html вот обзорная статья какая-то нашласьUnderstanding Zookeeper protocolsCredit : zookeeper.apache.org Zookeeper is the open sourced library of cluster membership. It is a centralized service for maintaini...
-
https://github.com/twitter/zktraffic
щас это попробую как то прикрутитьtwitter/zktrafficZooKeeper protocol analyzer and stats gathering daemon - twitter/zktraffic
-
хмм...
я не знаю что я сделал
но оно заработало
<Debug> zetcd_test.test_replicated (StorageReplicatedMergeTree, RestartingThread): Activating replica. -
Slach/clickhouse-zetcd
Test stand for creating Clickhouse test cluster via docker and zetcd - Slach/clickhouse-zetcd
-
если у кого то есть время поиграться со стендом ... сообщите результаты в личку пожалуйста?
-
=(( ай блин это все стандартный zookeeper
-
https://github.com/yandex/ClickHouse/issues/777
в общем ребята, посмотрите если не сложно стенд который я собрал на досугеclickhouse core dumped when try work over zetcd · Issue #777 · yandex/ClickHousei create repo https://github.com/Slach/clickhouse-zetcd for reproducing stand clickhouse + zetcd latest clickhouse Dockerimage core dumped after run following query sudo docker-compose run clickhou...
- 10 May 2017 (105 messages)
-
Joined.
-
Добрый день! коллеги а никто не сравнивал производительность КХ с СУБД на ГПУ (типа MAPD)?...
-
-
-
-
спсб видел... но там скажем так заинтересованное лицо было (ибо железо странное в тестах...)... а независимые (ну или условно независимые) тесты никто не делал? и что сами ребята из яндекса по поводу такого движка как ГПУ думают? не спрашивали в кулуарах?
-
если я правильно понял, то результаты заоблачные в mapd получаются тогда, когда данные в памяти GPU размещаются
-
Это же сколько надо видях воткнуть чтобы 1 тб прогрузить?
-
Как я понял в этом и заключается логика работы всего софта работающего с gpu
-
кстати, кликвью тоже все в памяти хранит )
-
те кому нужны эти микросекунды, те готовы приобретать такое оборудование
-
т.е. это достаточно нишевый продукт получается
-
Угу
-
В обалке эти теслы стоят космических денег
-
может какой-то микротрейдинг с реалтайм аналитикой и подобное
-
Ребят а вообще существует драйвер java для clickhouse чтобы его внедрить в какую нибудь migrate tool ?
-
в поиске по чату. Несколько раз точно говорили
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
есть мысль подключить драйвер для liquebase. это как реально ?
-
Я там ваше кидал
-
цитату овнера
-
mapd
-
But having said that, Mostak was willing to put some error bars on the top-end price. On a system with eight Tesla K80s, which might cost somewhere between $60,000 to $70,000, the license for the MapD stack would be “a small multiple” of this hardware cost.
-
причем тут mapD ?
-
см выше
-
там про мапд
-
спрашивали
-
а сори
-
40 видюх где-то )
-
кошмар ваще
-
-
Vladimir SELECT min(avg_score) FROM ( SELECT avg(score) FROM ... GROUP BY .. ) t ?
-
и включить в общий вывод
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
Спасибо! Гляну. Просто не хотелось бы два раза селектить и потом join
-
почти то что надо но не то, так в формате JSON еще можно понять где экстремы. В остальных форматах название столбца для экстремума тоже что название столбца(ов). Как получить значения в той же wso2 большая загадка - так как 1. запрос идет через драйвер и наверное extremes надо выставлять глобально, что неудобно 2. Необходимо промаппить результат по полям которые одинаковые))
-
в стандартные возможности это вряд ли укладывается, т.к. с точки зрения реляционной алгебры максимумы минимумы - это такая функция из отношения в отношние (из одной строки и 2n столбцов), и добавление их к основному ответу превращает обычный прямоугольный ответ в объединение цифр с некоторым соглашением про их смысл. в json их можно выдать, т.к. он поддерживает произвольную структуру, в tsv например начинаются неоднозначности.
-
-
Это все ясно. Просто можно давать в качестве ответа хотя бы max(название столбца) или min (название) .
-
-
да.
-
если идет выборка по небольшому количеству столбцов (как говорится логика работы КХ) то это не так ресурсоемко
-
-
-
Пытаюсь скрещивать между собой Ch и pentaho DI. Наткнулся на такую неприятную багу:
2017/05/10 14:09:45 - Table input.0 - ERROR (version 7.0.0.0-25, build 1 from 2016-11-05 15.35.36 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException:
2017/05/10 14:09:45 - Table input.0 - Couldn't get row from result set
2017/05/10 14:09:45 - Table input.0 - java.text.ParseException: Unparseable date: "2016-05-18"
т.е. столбцы с датой парсятся некорректно. Есть идеи как это побороть? -
Если только начинаете и не работает, то можете попробовать Talend, по нему мы можем подсказать :)
-
Не, Talend не хотелось бы)
-
ибо а) pentaho-server б) интерфейс у talend-а рисовали какие-то инопланетяне
-
Сам по себе pentaho работает - не работает table input из ClickHouse для столбцов с датами
-
toString() как бы спасает, но хотелось бы более прямого способа
-
-
YYYY/MM/DD
-
-
-
Кстати если б была функция runningMax или тп наподобие runningdifferencs то было б неплохо
-
соглашусь, хотелось бы побольше running-функций, особенно runningSum
-
Там все малость сложнее. DateTime обрабатывается корректно. в любом формате. проблема именно с Date. и мне пока не ясно кто тут крайний - pentaho или сама жаба
-
Доброго времени суток, может кто то соорентировать что будет быстрее:
Изходя из того что данных в кликхаусе 10ТБ
вариант первый:
CPU 8 Потоков
RAM 8
1ТБ RAID-1
replication factor 2
всего 20 Серверов
Вариант второй
CPU 16 потоков
RAM 8
2ТБ RADI-1
replication factor 2
всего 10 Серверов -
по теме не отвечу, но бросается в глаза то, что сервера вроде неслабые, а памяти с гулькины слезы
-
как-то не по современому
-
все сильно зависит от того как именно вы их будете нагружать
-
-
-
возможно вы и правы
-
но это уже тонкое понимание вашей конфигурации
-
-
-
если диски одинаковые, если сеть одинаковая (1Gb) и ваш коммутатор держит общую возможную нагрузку, то выходит 20 серверов лучше масштабируются по сетевому IO
-
при всяких ребалансировках и, наверное, некоторых запросах надо будет передавать меньшее кол-во данных через сеть с одного сервера
-
Joined.
-
Почему-то упоминаются только крайности. Хотя есть промежуточный вариант :)
-
-
вопрос по extremes - можно ли его задать для пользователя, для jdbc драйвера?
-
-
Joined.
-
Задал в профиле не сработало... Задал в драйвере - тоже. Просто хотел взглянуть что отдается если делать запрос не клиентом кх. Не судьба.
-
FORMAT какой?
-
В плане формат? По дефолту. Если я прописываю set extremes=1 и потом делаю запрос - clickhouse-client тогда выдается в зависимости от формата данные - по исходному запросу и по экстремам. Если формат JSON - тогда выдается в отдельной структуре в JSON ответе. Если формат не указываю (по моему pretty) тогда выдается 2 табличками. Ну и так далее..... Так вот я прописал в конфу пользователю <extremes>1</extremes> Перерестатовал - перелогинился - сделал запрос - табличка одна. Значит либо а) не то прописал, б) не сработало.
-
-
попробуйте в конфиг, но не к пользователю, а в профиль пользователя
-
-
-
не в курсе если честно. Хотел посмотреть что он выдаст.
-
спасибо - именно в профиле.
-
-
что верно то верно.
-
например jdbc при получении group by with totals format tsv оказывается в ситуации, когда у него есть ответ, потом есть одна строка состоящая из пустой строки и потом еще одна строка ответа. и если вы селектите одну строковую колонку, то вы не можете понять "где находитесь".
-
-
jdbc не съел параметр. Выдача одной таблицы.
-
-
-
-
-
В общем если сделать "переименование" колонки через добавление новой - реальные данные появятся только после мержа. Поэтому если у колонки убрать default срадзу же - то данных не будет
-
Вопрос про идемпотентность вставки (которая работает для 100 последних блоков).
В какой момент осуществляется отбрасывание дублирующихся блоков: ещё до вставки или уже после вставки, во время мерджей? Т.е. могут ли дубли всё же на какое-то время появиться в таблице? -
Во время вставки
-
-
-
-
-
-
Секретные крутилки чтоб сборка влезала в 3g:
cmake -DUSE_STATIC_LIBRARIES=0 -DUNBUNDLED=1
но с ними возможны спецэффекты в неожиданных местах. -
Кто знает, в ReplacingMergeTree слияние дубликатов происходит только в рамках одной партиции или за все время слияния тоже выполняются?
-
в партиции
-
- 11 May 2017 (94 messages)
-
-
Спасибо
-
Привет!
Есть ли способ в CH, имея имя поля как строку, сделать select из этого поля?
Т.е. хочется, чтобы SELECT someFunction('field_name') FROM table_name в действительности делал SELECT field_name FROM table_name
Зачем надо:
Имеем таблицу с некоторым количеством полей плюс-минус одинакового смысла (к примеру, количество ошибок по типам, каждая колонка - отдельный тип ошибки).
Имеем графану с соответствующим datasource. Хочу данные из всех этих полей иметь на одном дашборде без хардкода имён полей, чтобы при добавлении/удалении полей в CH дашборды в графане перестраивались без ручного вмешательства.
Пробовал делать Templating: $metric as SELECT name FROM system.columns WHERE table = 'table_name' AND name NOT LIKE 'date%', но при выбранных опциях 'Multi-value' и/или 'Include All option' в переменной $metric появляется набор строк, разделённых запятой: 'error_type_1', 'error_type_2'. Соответственно, нельзя сделать что-то типа SELECT $metric FROM table_name, т.к. будет выполнено SELECT 'error_type_1' FROM table. -
всем привет! у вас в документации отсутствует раздел про настройку SSL в КХ. В конфиге есть пример, но пока у меня не получается завести с самоподписанным сертификатом. Строчки
<verificationMode>none</verificationMode>
<name>AcceptCertificateHandler</name>
раскоментировал, но всё равно при попытке подключения в лог сыпется
<Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = SSL Exception: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate, e.what() = SSL Exception -
-
-
Есть ли простой способ сделать CREATE DATABASE nnn IF EXISTS или проверить наличие такой базы данных на сервере (второе даже лучше)
-
https://clickhouse.yandex/reference_ru.html#CREATE%20DATABASE + https://clickhouse.yandex/reference_ru.html#EXISTS?Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
блин, стыдно как-то
-
Продолжается регистрация на митап ClickHouse в Екатеринбурге 16 мая.
Если есть коллеги, друзья, кому это интересно, то можно поделиться анонсом в сетях:
https://twitter.com/ya_events/status/859366858604109824
https://vk.com/yandex.events?w=wall-17796776_5322
https://www.facebook.com/Yandex.Events/posts/1521278041225645
Спасибо!Яндекс.EventsClickHouse Meetup едет в Екатеринбург! Приглашаем на встречу 16 мая: https://t.co/e5ay8TFT8Y
-
ещё вопрос: для заливки данных всё так же только SQL? Очень надоело заниматься экранированием.
-
есть прекрасный FORMAT RowBinary где ты пишешь INSERT <...> FORMAT RowBinary а дальше идут бинарные данные как есть
-
описание структуры посмотреть в сырцах или я не нашел его в документации?
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
-
-
-
спасибо
-
Да, похоже, мой тест был плохим. Ограничение в 100 блоков, как и заявлено, работает в рамках таблицы.
Единственный нюанс - оно не строгое, иногда получается до 110 блоков вставлять без дублирования, а в течение очень короткого промежутка времени может получиться и ещё больше. Но главное, что отклонение в большую сторону, а не в меньшую, так что не страшно.
P.S. Если кому ещё будет интересно - можно поискать в коде переменную replicated_deduplication_window, станет понятно, откуда берётся 110. -
Такая проблема. Есть таблица, запросы к которой содержат фильтр либо по столбцу а, либо по столбцу b. Проблема в том, что т.к. индекс построен (а,b), то фильтрация по столбцу b, с учетом того, что фактов записей в таблице с десяток миллиардов, не представляется возможной. Кто как поступает в такой ситуации? Есть мысль создать еще одну таблицу с индексом (b,a) и дублировать в нее данные. Но что-то не очень нравится мне эта идея.
-
Нормальный вариант. Был комментарий на эту тему: https://habrahabr.ru/company/yandex/blog/303282/#comment_9658078Яндекс открывает ClickHouse
Сегодня внутренняя разработка компании Яндекс — аналитическая СУБД ClickHouse, стала доступна каждому. Исходники опубликованы на GitHub под лицензией Apache 2.0.
-
Окей, спасибо. Интересный комментарий.
Но все же, интересно, как например у яндекса устроено. Здесь постоянно обсуждаются таблицы с огромным количеством столбцов. И никогда не возникает потребности фильтровать по разным столбцам? -
а ключи постфактум можно регенерировать?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Home
Pilosa is an open source, distributed bitmap index that dramatically accelerates continuous analysis across multiple, massive data sets.
-
-
надо пропустить 500к строк. если у вас строки по килобайту, то вот они и получатся. prewhere выбирает блоки с выполненным условием, читая при этом меньшее число колонок.
-
-
-
-
-
-
-
-
Зависит от задачи. Например, в Метрике первичный ключ начинается с id счётчика - для большинства запросов это то, что нужно. Но если хочется быстрых аналитических запросов с фильтрацией по любому из двух некореллированых столбцов, то особо и вариантов нет, кроме как хранить всё два раза отсортированным в разном порядке. Конечно, удобнее, когда СУБД это делает автоматически.
-
-
-
-
Угу;)
-
-
если есть вопросы, я могу передать коллегам либо ответить сам
-
я как раз занимался первичными тестами на синтетической нагрузке.
-
-
не только поэтому, я думаю protobuf и прочие тоже бы выдержали такую нагрузку
-
проблема была в том, что эта статистика собирается из hot path
-
то есть вместе с запросом клиента, а в этом случае ключевая проблема - это оверхед, который вносит сборка / отпарвка этих сообщений
-
у capnp он ну очень маленький и сообщения собираются крайне быстро, избегая выделений памяти вообще
-
то есть, берется блок памяти из пула памяти и потом уже код демона заполняет его информацией которую извлек из запроса клиента и ставит в очередь на отправку на коллектор
-
-
-
можете подсказать по FORMAT RowBinary: если я правильно понимаю, то надо как-то сообщить кликхаусу с какого байта начинаются сырые данные
-
как правильно сообщить, что закончился текстовый INSERT и поехали бинарные данные?
-
INSERT INTO sessions (....) VALUES FORMAT RowBinary binarydata
-
вот что может стоять между RowBinary и binarydata ?
-
\n
-
спасибо
-
да, всё заработало, большое спасибо
-
я помню, тут обсуждался вопрос на тему хранения IP адресов. У меня сейчас пол-миллиарда строк с ip адресами в var string. Есть какая-то рекомендация по тому, как правильнее это хранить, учитывая, что пока не очень понятно как именно этим в последствии пользоваться?
-
возможно разумнее положить в fixed string 16 или fixed string + флаг на ipv4/ipv6?
-
Uint и функции типа IPv4NumToString и обратно
-
https://clickhouse.yandex/reference_en.html#Functions for working with IP addressesClickHouse Documentation | ClickHouse Documentation
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
у нас есть и ipv6
-
мы раскладываем в отдельные столбцы - в4, в6 и флажок про протокол
-
разработчики подтверждали, что это ОК
-
ты хочешь в одном поле и то и то хранить?
-
-
я не знаю, как правильнее и благоразумнее, потому что в данный момент я вообще просто складываю. Там можно найти и такой треш, как 10.0.75.15, 195.43.32.10 =)
-
короче, разумнее раскладывать, ок.
-
я просто планирую очередную миграцию структуры и это слегка беспокоит =)
-
-
есть IPv4 mapped on IPv6
-
и тогда невозможно отличить, го этой проблемой страдает, что хранит все в слайсе битово и хрен отличишь :/
-
-
Нашёл кажется ответ — проблема была в index_granularity. PREWHERE, насколько я понимаю, грузит куски содержащие true не менее чем по index_granularity строчек (поправьте, если ошибаюсь). В случае, если записей много и они распределены равномерно по порядку сортировки первичного ключа, WHERE действительно не будет отличаться от PREWHERE. Если уменьшить index_granularity — различие появляется. :)
-
-
Joined.
-
А чего твиттер неживой?;(
-
-
-
> А чего твиттер неживой?;(
Его завели на всякий случай, без конкретных планов по использованию. Сейчас мы ещё не начали его использовать. - 12 May 2017 (72 messages)
-
-
Добро пожаловать, 666 участник)
-
-
-
-
Коллеги, а есть в кликхаусе арифметическая (именно арифметическая, а не агрегатная функция), которая возвращает максимум двух значений
типо greatest в Oracle
http://oracleplsql.ru/greatest-function.html -
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
большое спасибо
-
-
там вроде пул-реквест до сих пор не приняли
-
а, ошибся. приняли уже
-
-
Basic integration with ClickHouse by vavrusa · Pull Request #1844 · airbnb/superset
This PR adds integration with ClickHouse SQLAlchemy engine spec. Adding database and tables works Adding views works Table, timeseries, group by, group by + timeseries works Using secondary dt...
-
Господа, такой вопрос - где кликхаус сервер хранит информацию о имеющихся базах и таблицах? Настроил в докер контейнере подключение папки /opt/clickhouse/data снаружи, создаю бд, создаю таблицы, они появляются в папке - но при пересоздании контейнера кликхаус перестаёт видеть эти папки, и ругается что базы данных нет, да и таблиц в ней тоже.
-
-
недавно поменяли дефалтное место хранения на /var/lib.
-
-
-
-
-
-
-
-
-
-
-
-
-
монтировать надо не /opt/clickhouse/data, а /opt/clickhouse
-
-
-
-
-
-
-
-
-
-
добрый день
вопрос по JOIN
я правильно понимаю что он не работает по имени таблицы а только по подзапросу? -
-
у меня просто при попытке приджойнить distributed таблицу ругается что такой нет в БД default
при этом при создании таблицы БД указана верно
например select ... from ... any inner join events using .... не работает. пишет нет таблицы default.events
select ... from ... any inner join stats.events using .... не работает. пишет нет таблицы stats.stats.events
но select ... from ... any inner join (select * from stats.events) using .... работает -
-
да, так работает. спасибо )
-
-
Попробуйте использовать функцию if
-
-
-
-
-
-
-
а отдельную папку лучше не линковать. лучше только config & data директории
-
Вы имеете в виду папку с метаданными? Но если её не линковать, кх в контейнере после перезапуска контейнера не видит бд и таблицы
-
-
-
-
-
-
-
-
-
-
-
ну или свой собирайте на основе официального как тут https://github.com/crobox/docker-clickhousecrobox/docker-clickhouse
Clickhouse server image that only binds to IPv4. Contribute to crobox/docker-clickhouse development by creating an account on GitHub.
-
Joined.
-
-
> it wasn’t possible to hot-swap just the faulty disks, and second the array rebuild took tens of hours which degraded I/O performance.
-
золотые слова
-
когда уже прекратят эти тормозные рейды пихать куда ни попадя
-
в этом плане важный момент, чтобы база сама корректно хендлила данный кейс
-
часто при сбое диска линукс встает колом и увы, продолжить работу корректно уже никак не выходит
-
Могут быть проблемы, в том числе и с рейдами тоже. Например, было пара случаев, когда файловая система повреждается, и в случайном месте readdir превращается в бесконечный цикл. Как правило, clickhouse-server всё-таки быстро перестаёт принимать запросы и запросы перестают идти на конкретный сервер. Также в последних ревизиях была добавлена функциональность отключения отстающих реплик при распределённых запросах, что позволяет быстрее убирать из нагрузки проблемные серверы.
- 13 May 2017 (32 messages)
-
ребят, доброе утро. только начал экспериментировать с ch, прошу терпеливо направить:
Нужно настроить перекладку записей из имеющейся продуктивной MS SQL базы в таблицу CH.
На данный момент хочу делать это раз в минуту (за 60 секунд в источнике генерируется ~19к строк).
После некоторого тюнинга запроса на MSSQL инстансе он выполняется за 15-30 секунд (приходится джойнить две толстые таблицы), в зависимости от загрузки сервера.
1 секунда уходит на складывание PIVOT-ом пары строк в одну вида [date],[timestamp_utc],[metric.1],[metric.2]
всё это генерируется на стороне MSSQL сервера - windows server.
Какие есть годные варианты, чтобы максимально быстро сложить результирующий CSV в таблицу CH?
Пока успел попробовать только передавать через web-морду по 1000 строк curl-ом - ооочень медленно.
Поглядел на Go либу - она вроде только через web работает..
Может, я невнимательно читал документацию и задачу записи через web-interface я мог бы распараллелить? Engine = MergeTree -
Можно класть по любому количеству строк. Для го есть нативная библиотека неплохая
-
GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse
Golang driver for ClickHouse. Contribute to ClickHouse/clickhouse-go development by creating an account on GitHub.
-
количество в 1000 на один POST где-то в документации встретил... поищу. И всё равно - получившееся число передавалось ощутимо долго, вся процедура ETL (простите, не DBA - могу не к месту использовать этот термин) выбивается из лимита в 60 секунд
-
Рекомендации не менее 1000
-
-
оуч, попробую! Спасибо за уточнение
-
Там рекомендация делать не очень много, но больших инсертов
-
Спасибо, я почему-то из офиса только одну разглядел - https://github.com/roistat/go-clickhouse, она мне не понравилась =)GitHub - roistat/go-clickhouse: Golang ClickHouse connector
Golang ClickHouse connector. Contribute to roistat/go-clickhouse development by creating an account on GitHub.
-
-
в параллели можно insert делать?
-
М... Никто не запрещает как бы :)
-
я сейчас сразу проверить не смогу.. =) приходится нудить
-
-
А можно я тогда вообще разойдусь и задам вопрос посложнее? 🤓
В задаче, что я описал выше, на стороне источника формируется избыточное количество строк для 60ти секунд - задан промежуток 58с > t > 122c. Eсть ли какие-то уже наработанные в community подходы для дедупликации строк? Прикидываю попробовать как-то реализовать механизм через temporary table, но вдруг уже кто-то изобрёл велосипед... -
Задачи, которые я хочу решить - удовлетворить свой перфекционизм, минимизировать мусор. В перспективе прикидываю сложить в CH значительное количество данных от разных систем (пока, например, исторических данных мониторинга от трёх систем) - начинать с захламления имхо не лучшая идея.
-
Условно костыльное решение: скидывать готовые csv в папку с именем вида unixtime.csv и заливать их по расписанию через clickhouse-client или веб-морду. Возможно менее костыльное- настроить сходное по логике через syslog-ng
-
https://github.com/nikepan/clickhouse-bulk еще может помочь. но он тоже через вебGitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts
Collects many small inserts to ClickHouse and send in big inserts - GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts
-
Вроде как лучше один раз в секунду по миллиону. Именно это написано в мануале
-
Но миллион в секунду - это нереальные же цифры
-
Ну совсем хорошо конечно так
-
Смотря чего
-
FusionIO и реальные;)
-
А еще можно в рам!)
-
можно, но если в одну таблицу то будет медленно, вставка пачками (большими) обусловленна тем что CH потом эти куски данных сливает вместе с имеющимися, а это дорогая операция
-
Спасибо. Прихожу к выводу, что оптимальнее загрузкой данных в CH было бы заниматься на стороне самого CH - вовне останется только подключение к mssql инстансу за данными. Распарсить и скормить в таблицу легче/быстрее на сервере CH через clickhouse-client, например..
-
Аналогичная проблема. И пока не проверил, но надеюсь что buffer engine тут поможет. Так как не очень хочется внешние обвязки для буфера делать: + дополнительная часть + задержка данных
-
да, buffer engine помогает с такими задачами, когда данные идут маленькими пачками
-
Evgeny, @inv2004:
Кхм, не уверен, что касательно моей задачи вопрос в маленьких пачках данных. У меня сейчас жалкие 19к строк через web интерфейс передаётся 14+ минут, а это всего лишь данные источника за минуту. csv с этими данными - меньше 3Мб.
Важное замечание, возможно - вместо curl приходится использовать cmdlet Powershell-а 'Invoke-RestMethod' - может, косяк производительности в нём?
P.S.:
@maxlapshin, lol... 1.000.000 строк в секунду да при моей текущей производительности... -
А что странного в миллионе строк в секунду? И тут надо еще понимать:
1) размер строки, сколько там колонок. Строка из 10 интов, и 100 стрингов -- это две большие разницы.
2) производительность дисковой подсистемы. В рамках одного сервера упирается обычно в диск
3) сколько серверов в кластере. Вставка при правильном дизайне масштабируется линейно
Можно грубо прикинуть размер строки в байтах, поделить его примерно на 5 (компрессия), а еще лучше померить точнее, как жмет ваши данные КликХаус, и соотнести с write speed дисковой подсистемы. Это будет верхний предел, но КликХаус от него не сильно должен отступать при достаточно больших блоках -
Возможно в нем, потому что 13к строк это мало
-
Да, это нереально медленно.
- 14 May 2017 (8 messages)
-
-
Я имел ввиду скорее на один сервер
-
Так зависит от данных. Если это что то в духе графитной потока то норм
-
Joined.
-
-
-
superset image https://hub.docker.com/r/crobox/superset
-
Можно попробовать. Мы держим включенной для запросов из интерфейса. В среднем преимущество очень небольшое - 5%. Изредка может даже привести к замедлению.
- 15 May 2017 (166 messages)
-
-
-
Зукиперу важно на диск скидывать в минимальными задержками, так что главное чтобы ничего больше рядом не крутилось и не писало
-
-
смотрите в docker logs <container_id>
-
-
-
-
ipv6 выключен?
-
-
-
-
так в контейнере ж, пускают через dockr run, без всяких --net=host
-
-
-
-
-
-
-
-
-
-
У меня такое было когда толи докеру в6 небыло доступно, толи на подклбченном впн в6 небыло
-
bloom@bloom-desktop ~/domains/Web/docker_reps $ sudo docker logs 0db4bbab4278
Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
2017.05.15 06:48:20.334073 [ 1 ] <Warning> Application: Logging to console
2017.05.15 06:48:20.335773 [ 1 ] <Information> : Starting daemon with revision 54198
2017.05.15 06:48:20.335845 [ 1 ] <Information> Application: starting up
2017.05.15 06:48:20.336182 [ 1 ] <Debug> Application: rlimit on number of file descriptors is 1048576
2017.05.15 06:48:20.336191 [ 1 ] <Debug> Application: Initializing DateLUT.
2017.05.15 06:48:20.336196 [ 1 ] <Trace> Application: Initialized DateLUT with time zone `Zulu'.
2017.05.15 06:48:20.336642 [ 1 ] <Debug> Application: Configuration parameter 'interserver_http_host' doesn't exist or exists and empty. Will use '0db4bbab4278' as replica host.
2017.05.15 06:48:20.336738 [ 1 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/users.xml'
2017.05.15 06:48:20.338088 [ 1 ] <Warning> ConfigProcessor: Include not found: networks
2017.05.15 06:48:20.338102 [ 1 ] <Warning> ConfigProcessor: Include not found: networks
2017.05.15 06:48:20.338463 [ 1 ] <Information> Application: Loading metadata.
2017.05.15 06:48:20.338626 [ 1 ] <Information> DatabaseOrdinary (default): Total 0 tables.
2017.05.15 06:48:20.338879 [ 1 ] <Debug> Application: Loaded metadata.
2017.05.15 06:48:20.338973 [ 1 ] <Information> DatabaseOrdinary (system): Total 0 tables.
2017.05.15 06:48:20.339620 [ 1 ] <Information> Application: Shutting down storages.
2017.05.15 06:48:20.339665 [ 1 ] <Debug> Application: Shutted down storages.
2017.05.15 06:48:20.340117 [ 1 ] <Debug> Application: Destroyed global context.
2017.05.15 06:48:20.346461 [ 1 ] <Error> Application: Net Exception: Cannot assign requested address: [::1]:8123
2017.05.15 06:48:20.346471 [ 1 ] <Information> Application: shutting down
2017.05.15 06:48:20.346473 [ 1 ] <Debug> Application: Uninitializing subsystem: Logging Subsystem
2017.05.15 06:48:20.346528 [ 2 ] <Information> BaseDaemon: Stop SignalListener thread -
Явное указание в4 помогло
-
-
-
-
-
У меня в ос в6 был, но гдето комуто не додали в окружении и кликхаус не взлетал
-
Через волюм конфиг прокинь Свой
-
а зачем? (я из интереса, не спора ради)
-
Затем что v4 пользуются все и вся. v6 - не все И при этом получить error на стадии запуска - это не самый хороший вариант.
-
-
-
-
-
Попробуйте понизить приоритет precedence ::ffff:0:0/96 100 в /etc/gai.conf
-
-
crobox/docker-clickhouse
Clickhouse server image that only binds to IPv4. Contribute to crobox/docker-clickhouse development by creating an account on GitHub.
-
Попробуйте поработать у провайдера...
-
-
-
-
-
-
Ребята да при чем тут стандарты? Я говорю про реальность. А реальность такая - у большинства , даже у вас, кто спорит, у большинтсва используется ipv4. Кто в настройках держит ipv6 дома например?) кому провайдер выдал ipv6? Не спорьте. Даже в компаниях достаточно больших используются ipv4.
-
-
В докере может не быть в6
-
бинго
-
Да понятно )
-
Пожалуйста :)
-
Не ::1
-
Что имеется ввиду?
-
-
Люди жаловались, что IPv6 выключен в ядре у какого-то известного облачного хостинга.
-
не по существу.
-
Речь конкретно о докере, а не об абстрактном линуксе
-
Докер использует другое ядро?
-
crobox/docker-clickhouse
docker-clickhouse - Clickhouse server image that only binds to IPv4 -
Докер использует все из хостовой системы на прямую?
-
-
Ядро используется юзерспейсом из докера совсем не так как нативно -там как минимум вкдючаются неймспейсы, cgroups и т.п.. Если бы разница между докером и нативом была только в юзерспейсе, то вместо докера был бы просто скрипт с чрутом и образ системы
-
в современных линуксах неймспейсы и пр. могут использоваться процессами или системой инициализации
-
-
Могут, никто не спорит. Но это капля в море по сравнению с тем что делает докер.
-
-
Докер это только юзерспейс к тем фичам, что в ядре появились примерно с 2.6.28
-
-
https://docs.docker.com/engine/userguide/networking/default_network/ipv6/
А по дефолту докер полностью выключает в6(Enable IPv6 supportHow to enable IPv6 support in the Docker daemon
-
Да, но где вы видели юзерспейс который этим пользуется? Я всего лишь к тому, что в общем случае условия работы в докере и в нативе достаточно сильно отличаются, хоть это и не важно для большинства приложений.
-
Но эти отличия могут в некоторых случаях изменять поведение приложения достаточно сильно.
-
Вот и ответ. В образе КХ нужно тоже отключить в6 и проблема будет решена. Кому надо, тот включит.
-
LXD/lxc :D
-
Опять частности :)
-
Я думаю мой посыл понятен
-
-
-
хотел проверить по ipv6. НО docker logs -f clickhouse-server
Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
POCO ERROR: Exception: Could not determine local time zone: boost::filesystem::canonical: No such file or directory: "/usr/share/zoneinfo/"
terminate called after throwing an instance of 'Poco::Exception'
what(): Exception -
Joined.
-
-
У нетфликса кажется была прекрасная презентация на тему отличий докера от нативас примерами. Когда приложение видит 16 ядер и настраивает себя соответственно, а в докере ему выданы два. С остальными ресурсами тоже самое.
-
Люблю такие what()
-
-
-
Добрый день! Есть 2 сервера в реплике. Для пользователя default установлен пароль. На одном из серверов пытаюсь удалить данные из таблицу:
:) alter table test_table_10 drop partition 201703
Удаление не происходит, вываливается ошибка:
DB::Exception: Password required for user default.
Где ему надо прописать пароль для пользователя? В документации есть пример для distributed, но у меня обычная реплика -
в то самое место
<yandex>
<remote_servers>
<cluster_name>
<shard>
<internal_replication>true</internal_replication>
<replica>
<user>name</name> -
у меня сейчас этой секции вообще нет в конфиге. Т.е. если у меня всего 2 сервера в реплике, я всё равно должен эту секции создать и описать 1 шард. так?
-
-
-
создал issue
-
-
Это недоработка запроса DROP PARTITION. Он может выполняться только на реплике-лидере. Если он выполняется на другой реплике, то он проксируется из под пользователя default. Решение - напрямую отправить запрос на другую реплику.
-
2017.05.15 08:33:50.595347 [ 1 ] <Error> Application: Net Exception: Cannot assign requested address: [::1]:8123
2017.05.15 08:33:50.595362 [ 1 ] <Information> Application: shutting down
2017.05.15 08:33:50.595367 [ 1 ] <Debug> Application: Uninitializing subsystem: Logging Subsystem
2017.05.15 08:33:50.595423 [ 2 ] <Information> BaseDaemon: Stop SignalListener thread
root@Debian-87-jessie-64-minimal ~ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host -
-
А пароль там можно указать только в открытом виде? я попробовал password_sha256_hex - не сработало
-
https://clickhouse.yandex/reference_ru.html#Distributed
password - пароль для соединения с удалённым сервером, в открытом виде. по умолчанию - пустая строка.Документация ClickHouse | Документация ClickHouseClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
спсб
-
-
создал issue
-
Просто у меня в users.xml пароль для default в хэше, а в конфиге открытый - и так не работает, он всё равно ругается и требует пароль. Вот если в users.xml тоже сохранить в открытом виже - тогда работает.
-
Joined.
-
-
Joined.
-
Bug #1682622 “tzdata package has been removed at 2017-04-10” : Bugs : cloud-images
Hello! It appears that `tzdata` package has been removed from the tarball at 2017-04-10. grzesiek@debian: ubuntu $ wget https://partner-images.canonical.com/core/xenial/20170331/ubuntu-xenial-core-cloudimg-amd64.manifest grzesiek@debian: ubuntu $ wget https://partner-images.canonical.com/core/xenial/20170410/ubuntu-xenial-core-cloudimg-amd64.manifest grzesiek@debian: ubuntu $ diff * 94d93 < tzdata 2016j-0ubuntu0.16.04 In other words `tzdata` package is not present in https://partner-i...
-
-
Joined.
-
-
по поводу совсем отключеного ipv6 - теперь есть секретное отсутствие опции <listen_host> - если ее совсем нет в конфиге - то clickhouse попробует слушать ::1 и 127.0.0.1 и НЕ вылетит при ошибке "protocol not supported".
но при "Cannot assign requested address" все еще вылетит, если эта ошибка связана с отсутствием протокола - и ее можно добавить в игнорируемые.
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Server/Server.cpp#L557yandex/ClickHouseClickHouse is a free analytic DBMS for big data.
-
-
-
Надо на всех
-
-
Вопрос по созданию Distributed таблицы: как правильно написать CREATE запросы, если я хочу создать распределенную таблицу над множеством таблиц ReplicatedMergeTree так, чтобы шардирование было по materialized полю strongestIdHash UInt64 MATERIALIZED cityHash64(idType, strongestId) ? при этом это поле strongestIdHash участвует в ключе у внутренних ReplicatedMergeTree-таблиц
-
если в CREATE-запросе для distributed таблиц повторить описание всех полей из ReplicatedMergeTree (с дефолтами и материализед-секциями), то пишет: "DB::Exception: Not found column strongestIdHash in block. There are only columns: ."
Если выкинуть дефолты и материализеды из запроса на создание Distributed таблицы, то не получается делать insert прямо в нее -
-
коллеги
а подскажите пожалуйста как импортировать данные в КХ из файла -
формат файла какой?
-
-
tabSeparated
только пример из доки не работает( -
-
-
-
у меня не csv
-
я сделал вывод http запроса в файл
я так понимаю кх возвращает tabseparated -
-
-
я взял данные с прод сервера и хочу на тестовый залить
-
по умолчанию вроде TSV, да.
cat filename | clickhouse-client --query "INSERT INTO table FORMAT TabSeparated"
а так если, какие ошибки? -
Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected \n before: \t500
-
-
-
-
точно одинаковые
-
clickhouse-client -h host-from --query="SELECT * FROM t FORMAT TSV" | sed -- 's/smth1/smth2/g' | clickhouse-client -h host-to --query="INSERT INTO t FORMAT TSV
я таким образом данные переносил с одного сервера в другой -
Доклад Cloudflare про использование Кликхауса: https://indico.dns-oarc.net/event/26/session/5/contribution/21/material/slides/1.pdf
-
Видео тоже есть на ютуб канале DNS OARC26.
-
-
а линканите видео плз
-
-
-
-
Добрый вечер! подскажите, пожалуйста, как изменить значение в таблице? В документации есть про добавление новых столбцов/строк, а как изменить одно значение?
-
Insert ... select в новую таблицу и потом rename
-
А вообще clickhouse предполагает write once
-
-
Спасибо. Тогда, может, есть лучший варинат хранения данных. Для аналитики надо хранить данные, типа счетчиков, то есть их постоянно придется менять.. В каком виде удобнее хранить такие данные? Видимо, вариант в таблице не очень хороший
-
-
да, именно такие, но не для всего столюца одинаковая delta
-
есть простой вариант, хранить всю историю изменений, т.е. сколько раз счетчик увеличивается, столько раз делать insert counter_id, value_delta. и потом получать значения через select sum(delta) group by counter_id. есть чуть более продвинутый вариант, когда часть этой работы на себя берет сервер.
-
этот вариант не подходит, так как в определенные моменты счетчик должен обнуляться (
-
храните в другом месте счетчики
-
Видимо, лучше будет вне CH хранить...
-
Спасибо
-
и по триггеру обсчитывайте то, что налилось в кликхаус
-
а как эти моменты выражаются в данных?
-
так оптимальнее всего имхо
-
можно попробовать буфер таблицу, кстати
-
считать ее и потом пересоздавать :)
-
а что если изменять scv, а потом подгружать как словарь?
-
При достижении максимального значения, должно быть обнуление
-
А что может быть не так если запускать в docker?
Code: 49. DB::Exception: Received from some-clickhouse-server:9000, 172.17.0.2. DB::Exception: Logical error: zero number of streams requested. -
-
вы можете считать modulo(sum(delta), max_value), это будет эквивалентно занулению счетчика при достижении max_value.
-
Joined.
-
- 16 May 2017 (75 messages)
-
DNS OARC 26: Monday
https://indico.dns-oarc.net/event/26/ Madrid, Spain
-
-
спс
-
-
-
-
-
-
@Civiloid спасибо!
-
Joined.
-
-
-
-
-
Вчера кто то писал что в образе убунту 16.04 отсутствует tzdata
-
-
Собери на его базе свой, поставив tzdata.
-
-
-
Образ clickhouse сонован на образе ubuntu (FROM ubuntu), Там в Dockerfile все расписано. Зачем убунту - неясно для меня по крайней мере , так ка убунту всегда являлась и является unstable и подходит разве только для развлекательных задач. Если создавать образ - так на основе debian.
-
-
не в курсе. Просто позиция такая что docker - хотите побаловаться - ставьте
-
-
-
это лал. Может дебиан еще и 6 использовать? Чтоб совсем стабильно было?))
-
да, большинство на ubuntu у них.
-
-
Спорить не буду. Спор ни о чем.
-
-
конечно не о чем. Голословно заявлять что система unstable в то время когда на ней крутится очень не мало прода у лидеров как минимум рунета. Яндекс, Мыло...
-
-
Не в курсе. из Я и мыла сведений не поступало. Вполне возможно что так оно и есть. Но Я и мыло - далеко не все компании мира
-
-
-
-
-
Убунта очень много где, больше чем другие дебивн по количеству установок
-
Вчера был фикс про tzdata в репе кликхауса, до реджестри еще не доехало. Почемуто оптимизаторы образа убунты выкинули ее.
-
-
Это легко исправить. Создайте issue, чтобы не забылось.
-
Boolean JSON fields do not cast as UInt8 in JSONEachRow · Issue #798 · yandex/ClickHouse
$ clickhouse-cli -q 'CREATE TABLE test (bool UInt8) ENGINE = Memory;' $ echo '{"bool": false}' | clickhouse-cli -q 'INSERT INTO test FORMAT JSONEachRow' Received exception from server: Cannot par...
-
Если бы не митап в Екб, прямо сейчас бы пошёл и исправил :)
Кстати, не забудьте прийти на митап в Екб. -
-
-
Click House — Kevin Gates
Слушайте на Яндекс.Музыке: My click house go stupid My click house go stupid My click house go stupid My click hou-
-
вторая ссылка
-
лол)
-
-
Joined.
-
Всем привет.
Тут давно спрашивали, не занимался ли кто реализацией бинарного (native) протокола. Она уже есть на Go, но удивительно, что никто ещё не начал ковырять её для Python.
Я взял на себя смелость и начал потихоньку пилить его: https://github.com/mymarilyn/clickhouse-driver. Там пока ещё много чего нет, в частности массивов, энамов, вложенных струкрур и прочего. Может кому-то это покажется полезным.
В данный момент запиливается поддержка компрессии.GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface supportClickHouse Python Driver with native interface support - GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support
-
-
вроде как дотнет коннектор тоже работает через бинарный протокол https://github.com/killwort/ClickHouse-NetGitHub - killwort/ClickHouse-Net: Yandex ClickHouse fully managed .NET client
Yandex ClickHouse fully managed .NET client. Contribute to killwort/ClickHouse-Net development by creating an account on GitHub.
-
я юзаю из .net core, для селектов работает, компрессию lz4 поддерживает
-
я еще для себя запилил открытую wiki с faq, но не знаю, насколько это вообще хорошая идея. если кому-нибудь интересно/полезно, будет круто.
https://github.com/hatarist/clickhouse-faq/wikihatarist/clickhouse-faq¯\_(ツ)_/¯. Contribute to hatarist/clickhouse-faq development by creating an account on GitHub.
-
Привет!
Подскажите, можно ли в insert использовать значение, полученное из словаря? Получаю Code: 49. DB::Exception: Logical error: there is no global context
Подробный лог https://pastebin.com/pY3t6SHr -
-
-
-
Добрый вечер! Столкнулся c проблемой, что MaterializedView нельзя переименовать через RENAME. Есть ли какая-нибудь возможность переименования вьюшек без дропа? Спасибо!
-
в tabix есть функционал "Upload CSV". Чет не соображу для чего и как его использовать?
-
это для сравнения рядом таблиц в интерфейсе, загрузку на сервер еще не сделал
-
Joined.
-
-
Коротко - следует использовать INSERT SELECT.
-
При записи INSERT ... VALUES, значения после VALUES парсятся быстрым потоковым парсером, который не поддерживает возможность использовать вычисляемые выражения. При этом, поддержка выражений всё-таки есть, но добавлена как исключительная ветка в коде - если быстрый парсер не смог распарсить VALUES. При этом поддержка ограничена.
-
Это про dictGet в INSERT ... VALUES.
-
Можно восстановить - перенести данные в соседнюю директорию. Создать пустую реплицируемую таблицу. Переместить старые данные в директорию detached в ней. Подключить данные с помощью запросов ALTER TABLE ... ATTACH PARTITION.
-
-
Удобного способа нет. Впрочем, можно остановить сервер, переименовать вручную в файловой системе (будут две таблицы - сама materialized view, и ещё таблица с именем, начинающимся на .inner.) и запустить сервер.
-
-
Открыт код СУБД MapD Core, использующей GPU для хранения и обработки данных
Компания MapD Technologies объявила об открытии исходных текстов СУБД MapD Core, обеспечивающей создание хранилища в оперативной памяти (IMDB - in-memory database). СУБД поддерживает SQL и оптимизирована для решения задач по анализу и визуализации данных. Код написан на языках C++ и Go, и распространяется под лицензией Apache 2.0.
-
Для PostgreSQL развиваются механизмы ускорения за счёт привлечения GPU
В рамках проекта PG-Strom при участии компании NEC развивается дополнение к СУБД PostgreSQL, позволяющее вынести на плечи GPU выполнение некоторых операций обработки SQL-запроса. В частности, за счёт привлечения GPU могут быть ускорены такие операции как сравнительный перебор элементов таблиц, агрегирование записей и слияние хэшей.
-
и там же )
-
в кх нет в планах добавить поддержку gpu ? :)
-
Зачем?
- 17 May 2017 (86 messages)
-
Для ускорения расчётов.
-
Всем привет! А у кого-нибудь были кейсы использования кликхауса для решения маркетинговых задач или по оптимизации и аналитике рекламы?
-
Тут у 90% такие задачи.
-
Joined.
-
Кто-нибудь делал перешардирование данных? На всех шардах создал таблицу одинаковым запросом create, на одном из шардов налил в таблицу данные, но при попытке перешардировать их в два других шарда получаю "DB::Exception: Table is inconsistent accross shards, e.what() = DB::Exception". Что может быть не так?
-
-
Всем привет. Почему при использовании in в запросах следущего вида :Select * from table1 where id in (select id from table 2 where...), select * from table1 where id in (table2). Не используется индекс по id?
-
-
А когда непосредственно значения в in передаю - все хорошо.
Движок MergeTree(date,(id,date),8192) -
в table2 такой же индекс?
-
Нет
-
Это либо memory таблица без индекса. Либо mergetree но там индекс другой
-
В описанном запросе "Select * from table1 where id in (select id from table 2 where...)" индекс должен использоваться. По крайней мере, в моем случае так и происходит
-
Очень странно...
-
добрый день
подскажите пожалуйста есть ли какая-то возможность создать VIEW поверх Distributed таблицы? -
Вы уверены? Месяца 3 назад такой функциональности еще точно не было. Индекс использовался только для вложенных запросов с функциями сравнения, предполагающими одно значение в ответе вложенного запроса (равно, больше, меньше и тд)
-
-
теперь выдает 2017.05.17 09:37:00.978636 [ 1 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/users.xml'
2017.05.17 09:37:00.983014 [ 1 ] <Warning> ConfigProcessor: Include not found: clickhouse_remote_servers
2017.05.17 09:37:00.983079 [ 1 ] <Warning> ConfigProcessor: Include not found: clickhouse_compression
2017.05.17 09:37:00.992248 [ 1 ] <Error> Application: DB::Exception: There is no profile 'default' in configuration file.
2017.05.17 09:37:00.992264 [ 1 ] <Information> Application: shutting down -
-
100%
-
-
Проверю. Все может быть 😊
-
Глупый вопрос. Собираюсь на сервере кроме КХ держать постгресс для словариков + data integration server. Два последних сервера - в докере. Как лучше - для однообразия поместить КХ в контейнер или оставить на физическом хосте. По идее производительность КХ не должна сильно страдать.? В дальнейшем будущем собираемся делать кластер. Но на данный момент 128Г ОП должно хватить за глаза. "Безобразно но однообразно" (c) или как
-
-
-
в интернете много страшных историй. Туда лучше не ходить)) Мы в докере на продакшне поднимали системы. Особенно удобно если поднимается глючная портированная система. Например переносили Bizagi.
-
Спасибо!
-
монтирования вроде только один существует
-
Да
-
Или про что?
-
Наверно, правильная терминология - storage driver. https://docs.docker.com/engine/userguide/storagedriver/selectadriver/Docker storage drivers
Learn how to select the proper storage driver for your container.
-
да
-
ну если директория монтируется внутрь контейнера, то там только пробросить ее можно и все
-
Все правильно. Имелось ввиду - сторадж драйвер + монтирование
-
-
я так понимаю именно так. Ну то есть если сделать -v для дата КХ то производительности и проблем с записью/чтением данных вообще не должно быть. кроме этого отпадает вопрос с сохранностью данных при краше контейнера
-
-
Чет не соображу... есть массив значений типа [1,2,3,4] как относительного это массива сделать что-то вроде X IN [1,2,3,4]?
-
отбой, нашел https://clickhouse.yandex/reference_en.html#has(arr, elem)ClickHouse Documentation | ClickHouse Documentation
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
надеюсь это достаточно эффективно
-
Товарищи, а как настроить на сервере логирование чтобы он выводил в лог всю строки INSERT на которой произошла ошибка при вставке. Ибо сейчас он выводит в лог только кусочек, а когда 150 колонок - очень не просто понять где при переливке произошёл косяк.
-
Поделитись кто-нибудь открытым ключем E0C56BD4, которым пакеты кликхауза подписаны, похоже его дропнули с keyserver.ubuntu.com
-
Странно только сегодня утром ставил apt-key adv —keyserver keyserver.ubuntu.com —recv E0C56BD4
-
gpgkeys: no key data found for http://keyserver.ubuntu.com/
gpg: no valid OpenPGP data found. -
сейчас гляну
-
а про mapd не понимаю, откуда его сравнение с CH
-
у меня в докере отработало, ключ импортнулся
-
никто не мешает людям сравнивать самолет с арбузом
-
можно, но там с использованием индексов пол года назад была проблема. А так - это ж просто аналог подзапроса
-
и на мой взгляд, поддержка GPU за десятки тысяч баксов несколько уходит за рамки идеологии которую сейчас поддерживает кликхаус
-
-
кликхаусом я могу проанилизировать ТЕРАБАЙТЫ на паре своих домашних ноутбуков, на которых встроенное видео на 512мб=)
-
и лично мне нахрен эти GPU за миллионы не сдались, кому надо -купите/поставьте mapd :)
-
Joined.
-
Всем добрый день.
-
Ребят есть в clickhouse выгрузка из яндекс метрики из коробки?
-
Metrica API — Connecting the Logs API to ClickHouse — Yandex Technologies
ClickHouse allows you to work with non-aggregated statistical data from Yandex.Metrica that you receive via the Logs API. To connect the Logs API to ClickHouse:
-
Ребят, добрый день
Может кто подскажет, не очень понимаю как сделать
Есть визиты, которые кладутся в базу сразу(юзерагент, ип, user_id и пр.), и есть информация которая приходит задолго после - время на странице, флаги типа был ли скролл и т.п.
Если в обычной бд не было проблем - просто проапдейти запись и все, то как в кх это сделать? -
-
Joined.
-
-
Т.е. грубо говоря мне приходит показание таймера в виде {visit_id: ..., seconds: ...}
После я нахожу последний визит, мержу секунды и вставляю эту запись?
Так?
Просто смущает что это куча одиночных операций селекта, а в доке указано ограничение на 100 запросов в секунду -
в обычной бд будут проблемы, т.к. апдейты тормозят.
-
у нас аналогично, сначала приходят данные о pageview со всей инфой, потом флаги времени на странице, скроллы и т.п., которые заполняют основную информацию, чтобы можно было сматчить с pageview, и значение для дополнительного столбца
-
т.е. каждый раз селект предыдущей версии записи делается? а движок какой таблицы?
-
CollapsingMergeTree
-
-
-
-
Ребят, извиняюсь за тупость
В случае с Collapsingmergetree
Когда мне нужно изменить запись по id - я нахожу эту запись и делаю два инсерта, один - на вставку старой(найденной) записи с Sign = -1, второй - на ставку измененной записи с Sign = 1
Правильно понимаю? -
Ну да
-
Но только оно сразу не схлопнется в одну запись
-
Joined.
-
-
-
Вы же понимаете что все в мире относительно? У кого то на 50 сляжет все. У кого то 1000 держать будет и не поперхнётся.
-
Да, я понял, спасибо, так и сделаю
-
Я понимаю)
Обидно будет если переедем, но не до конца оттестим
Хочется без даунтамов и серьезных изменений архитектуры после переезда -
> что перед каждой правкой нужно находить предыдущую версию,
для этого нужен какой-то (шардированный реплицируемый) kv-storage, на базе которого будет реализована функция (новые события,состояние)->(новое состояние,лог изменения). лог изменения писать в CH, велосипед городить свой. -
Joined.
-
-
-
-
-
-
- 18 May 2017 (151 messages)
-
а с чем связана рекомендация относительно Float32/Float64 - "Не рекомендуется хранить числа с плавающей запятой в таблицах." ?
-
-
Насколько я помню тут говорили, что люди пытались делать подсчет денег на КХ и брали Float, а потом удилвлись почему сравнения нормально не работают, и почему 2.0 + 2.0 = 3.9999999994
-
Ну про артефакты плавучки я в курсе, но это ж не проблема хранения в таблицах
-
я думаю тут есть ньюансы... основной в том что можно использовать энд-юзеровские решения типа GTX 1080... они как раз стоят даже дешевле чем ЦПУ.... единственное различие между такими ГПУ и теслами это стабильность работы и объемы памяти... последний факт думаю может быть наиболее важным...
-
Храните копии записей в kv-таблице
-
-
-
А вы файл ищите: на сервере или у себя на локальной машине?
-
Если что, нужно второе
-
-
-
-
-
привет всем, заранее прошу прощения если помешаю вопросом :) Мы внедряем clickhouse для нашего проекта по мобильной рекламе. Кто-нибудь мог бы помочь (платно или бесплатно) с некоторыми вопросами или посоветовать кого-нибудь, кто разбирается в clickhouse?
-
мне кажется тут вам и бесплатно помогут если вопросы будут сфорулированные)
-
спасибо! лучше конечно в виде фрилансера для проекта
-
Я уже писал. В чем смысл gpu, когда пока даже в памяти индексов нет. Ну будет отставание в 2-3 раза от гпу, но это всё равно в 100 раз быстрее чем с диска.
-
Мы хотим писать в него трафик и делать статистический анализ. Так как мы не совсем технически подкованы то нужна помощь в этом. Например: как создать пользователей, понять как писать отдельно каждый запрос или пачками. Желательно найти человека, который бы мог по каждому вопросу поддерживать, по мере их появления.
-
Добрый день!
Подскажите пожалуйста настройку для изменения лимита, после которого над партицией не происходит OPTIMIZE c FINAL.
Можно ли эту настройку передать не перезагружая сервер? -
В kdb для хранения денег используется float, но они учитывают точность при сравнении.
-
Мне кажется что лучше в таком случаи брать готовые сервисы, если честно :)
-
-
штука в том, что у СТО будет это все поддерживать :) потому что он разберется с clichous'ом, но сейчас сроки поджимают, поэтому нужен знающий человек, который бы нам помог
-
-
-
-
-
я собирал вчера
-
-
-
yandex/ClickHouse
ClickHouse is a free analytic DBMS for big data.
-
-
-
-
-
Во, спасибо!
-
у меня не собрался, но я извращенец, я цлангом его собираю
-
-
я извращенец )
-
-
-
-
А ты знаешь толк)
-
-
-
-
-
-
Даже в мыслях не было)))
-
-
-
докер ) впрочем тоже виртуалка, да )
-
aws подними
-
докер поднимет виртуалку
-
угу ) но прозрачно для тебя
-
-
-
-
Да нифига не прозрачно) ip то другой
-
-
порты пробрасываются без проблем на localhost
-
Ладно ладно. Просто не хочу этого непотребства на рабочей тачке)
-
-
-
-
-
-
-
-
-
Прирост от rowbinary будет. Keepalive поддерживается.
-
-
есть нативный интерфейс, на Го хороший очень клиент
-
GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse
Golang driver for ClickHouse. Contribute to ClickHouse/clickhouse-go development by creating an account on GitHub.
-
C++ бы клиент улучшить!)
-
-
-
Ещё не умеет.
-
-
коллеги, а здесь имеется в виду абсолютное или относительное отставание таблицы? https://github.com/yandex/ClickHouse/blob/1db9a73059880b082fa4f9c01b549597bf34e8d2/docs/ru/settings/settings.rst#max_replica_delay_for_distributed_queriesyandex/ClickHouse
ClickHouse is a free analytic DBMS for big data.
-
Добавить флаг -nogpgcheck
-
-
Добрый день!
Подскажите пожалуйста настройку для изменения лимита, после которого над партицией не происходит OPTIMIZE c FINAL.
Можно ли эту настройку передать не перезагружая сервер? -
абсолютное
-
@AndreevDm кхм
-
Joined.
-
Добрый вечер. Хотел узнать как принято для кликхауса получать количество строк запроса с группировкой для пагинации. конечно можно сделать вложенный запрос - но мне какжется есть способ элегантнее.
-
-
-
по идее кликхаус в момент выборки с группировкой уже знает количество строк в результате. было бы отлично получать его как то в шапке ответа
-
причем вне зависимости от лимита
-
да именно такого хочется :)
-
-
format json , rows_before_limit_at_least
-
я тоже пробовал с ним - но агрегирующие функции суммируют и внутри группы
-
а это сейчас попробую - спасибо
-
-
да - я понимаю. Меня в принципе устроит. Хотя для запроса с группировкой помоему даже точно посчитать должно
-
-
Ребята подскажите - есть запрос - который возвращет время - значение. Можно ли сделать что то вроде вычисление средних (сплайнов) в зависимости от N - ну то есть если N=count - выводится все значения, если N=count/2 - тогда выводятся средние значения - медианы. Ну так далее
-
-
-
При чем тут бд вообще?)
-
Притом что нужно получить по запросу. Да и правда нафига в бд квантили медианы и avg
-
Сейчас
-
То есть вы хотите по сэмплу интерполяцию какую-то для конкретной величины?
-
-
-
да. Но не интерполяция
-
интерполяция - расширение
-
а тут наоборот сузить кол-во результатов
-
-
да. С вычислением усредненных в зависимости от N
-
avg от полученных результатов чтоль?
-
Что такое N?
-
Что-то типа фильтрации шумов выходит
-
N - кол-во точек на временной шкале. (значение x) . Например если N = 2 а точек больше тогда надо посчитать 2 средних
-
-
то есть получается что то в виде агрегатной функции
-
Но только по соседям?
-
да
-
Мне кажется для такого нужны оконные функции
-
Которых вроде ещё нет
-
-
-
-
Что то вроде этого 😊
-
-
не получится. Только с подзапросом
-
-
-
Хочется красиво.
-
И это удобно - для отрисовки графиков - зумирование. Задаешь кол-во точек которые нужны и получаешь точность детализации
-
Ну типа avg group by trunc(date, 'minute')
-
и еще N
-
-
-
-
-
-
высокие частоты пропадут, из синуса может остаться ноль, например. хотя может это и нужно.
-
Сейчас проверю.
-
Не обязательно. Это зависит от того, как построить M точек, аппроксимирующих исходный ряд.
-
только M - нужно count сначала. Плюс наверное limit. ну и перевести date в Unixtime.
-
допустим вам нужно 100 точек за месяц. вы планировали группировать по не знаю чему, минуте, а надо по 432 минуты. либо это будет внешний запрос, в котором будет group by intDiv(номер минуты, 432) либо вы во внутреннем запросе сразу меняете выражение group by на вот это. count не нужен, нужет end-start / point length.
-
-
-
возможно более подходящим вариантом будет исходя из диапазона с данными и "разумного" количества точек брать одну из подходящих функций toStartOfX(dt) и использовать для получения точек ее. тогда сетка будет регулярной, но M будет переменным. если toStartOf функции отличаются гранулярностью не в очень много раз, то колебания у M будут тоже не очень большими. и данные, которые обычно имеют суточную/недельную цикличность, будут нарисованы с объяснимыми диапазонами в каждой точке. функции такого вида достаточно несложно добавлять. если конечно не нужна гранулярность средняя между днем и неделей.
-
-
- 19 May 2017 (60 messages)
-
-
Joined.
-
-
Joined.
-
-
Joined.
-
Joined.
-
-
-
Ребят, а какие уровни логирования есть в КХ? Чет не найду нигде
-
trace, debug, information, warning, error.
-
Ага, спасибо, Алексей)
-
-
Всем привет!
Есть ли что-то по типу ассоциативного массива в селекте ? -
-
SELECT [sumIf(confirmed, {cond}), sumIf(valid, {cond}] FROM tbl
SELECT [conf => sumIf(confirmed, {cond}), valid => sumIf(valid, {cond}] FROM tbl -
Как сделать, чтобы консольный клиент отрабатывал ^С? А то напрягает )
-
можете пояснить? вы хотите, чтобы в зависимости от данных выбирались разные функции?
-
нет, функция везде одна(суммирование), просто хочу получать ассоциативный массив
{confirm: 123, valid: 456} -
возможно, стоит создать словарь: https://clickhouse.yandex/reference_ru.html#%D0%A1%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D0%B8Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
Прописать FORMAT JSON в запросе.
-
Так пойдет?
(trap '' INT; clickhouse —client) -
странно) Я бы наоборот хотел отключить выход из клиента по ^C
-
не выход нужен, а удаление ввода
-
-
-
-
-
-
-
А нету зеркала на другом домене к репозиториям http://repo.yandex.ru/clickhouse/trusty ?
-
в яндексе зобанили?)))
-
К сожалению наоборот :(
-
как вариант, взять Cloudflare и через свой домен тупо запросксировать
-
если ребята с Я не ограничивают по host хидеру - отработает
-
ограничнивают =(
-
по айпи открывается mirror.yandex.ru
-
-
Joined.
-
Joined.
-
А если dns поменять на 8.8.8.8?
-
-
Пока что только через медленные прокси, иначе: ping yandex.com - ping: cannot resolve yandex.com: Unknown host, и так на все домены.
-
А если по ip ping?
-
тоже самое
-
А, ну тогда да, проксировать
-
ах, я кажется понял почему у вас не работает=(
-
вариант за CF - становится очень неплохой идеей
-
Отвлечённый вопрос - можно ли на каком-то CDN захостить статический файл (.js код), чтобы он был на общем домене и по https?
-
cdnjs - The #1 free and open source CDN built to make life easier for developers
Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests each month, powered by Cloudflare. We make it faster and easier to load library files on your websites.
-
вот тут народ раздает более-менее популярные js либы
-
Добрый вечер!
Подскажите, пожалуйста, как лучше всего произвести конкатенацию двух интовых массивов? Пробовал через перевод их в строковые, split-ы и concat-ы, но split хочет константную строку, может это как-то проще делается? -
-
-
-
-
Для таблицы с источником File, ClickHouse выполняет чтение файла заново, при каждом SELECT-е.
-
-
-
с ClickHouse использовать пока рано: https://github.com/coreos/zetcd/issues/38multiop · Issue #38 · coreos/zetcd
ZK's transactions. Haven't seen it used in the wild.
- 20 May 2017 (3 messages)
-
Привет :) Вопрос про ZooKeeper. Пытаюсь поднять его вместе с Clickhouse с помощью Docker Compose. Прописал три ноды и тому и другому. Если роняю любую из нод ZK кроме первой, то всё работает ок. А вот если роняю первую то Clickhouse теряет соединение и не может его установить. Такое ощущение что он опрашивает исключительно первую по индексу ноду и если она не отвечает, то к другим почему-то не переходит...
-
-
- 21 May 2017 (17 messages)
-
-
и в документации кстати неточность, не устанавливается по доке которая в Quick start
sudo apt-get install clickhouse-server-common clickhouse-client -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
clickhouse-client : Depends: clickhouse-server-base (= 1.1.54231) but it is not going to be installed
clickhouse-server-common : Depends: clickhouse-server-base (= 1.1.54231) but it is not going to be installed
E: Unable to correct problems, you have held broken packages. -
Можно из исходников собрать пакет. Это очень просто делается: https://github.com/yandex/ClickHouse/blob/master/doc/build.mdyandex/ClickHouse
ClickHouse is a free analytic DBMS for big data.
-
-
Всем привет. Подскажите, пожалуйста, как правильно построить запрос в кликхаусе. Есть таблица:
user_id | date | flag
1 | dt1 | 0
1 | dt2 | 1
2 | dt3 | 0
2 | dt4 | 1
3 | dt5 | 1
нужно для каждого пользователя выбрать дату, в которую flag в первый раз стал 1, и только если до этого хоть раз был ноль. то есть запрос должен вернуть 1|dt2, 2|dt4 -
argMin(arg, val) должен вам помочь
-
хотя нет - тут проще - отфильтруйте записи по flag=1 и в сгрупированном запросе возьмите min от даты
-
Постановка звучит так - если до этого был 0.
-
Селектите все у кого есть 1. Потом джойните к ним все записи с 0 и датой меньше чем 1
-
я тоже про это говорю. Но может @orantius предложит более изящный способ.
-
-
первое что в голову пришло
SELECT
user_id,
min(d_1) as md1
FROM
(
SELECT
user_id,
date AS d_1
FROM table
WHERE flag = 1
)
ALL INNER JOIN
(
SELECT
user_id,
date AS d_0
FROM table
WHERE flag = 0
) USING (user_id)
WHERE d_0 < d_1
GROUP BY user_id
SELECT
user_id,
arraySort(groupArray(date)) AS ds,
arraySort((x, y) -> y, groupArray(flag), groupArray(date)) AS flags,
arrayMap(i -> ds[i], arrayFilter(i -> ((i > 1) AND ((flags[(i - 1)] = 0) AND (flags[i] = 1))), arrayEnumerate(flags)))[1] AS d_1
FROM table
GROUP BY user_id
HAVING d_1 != '' -
-
select user_id, minIf(date, flag=1) as d from table group by user_id having minIf(date, flag=0) < minIf(date, flag=1) and minIf(date, flag=0) > 0;
-
-
не вернет ничего. и не должен по условию
-
- 22 May 2017 (112 messages)
-
-
-
это хостнейм от mirror.yandex.ru
-
я думаю можно даже не зеркало, а прокси
-
-
ведь проблема не с доступностью, а с блокировкой
-
-
-
-
я не контрибьютор, но просили передать
rsync://mirror.yandex.ru/yandexrepo/ -
-
кому нужно - http://mirror.jotcdn.net/yandex/clickhouse/
-
-
подскажите, есть ли возможность что бы КХ в запросе на COUNT() таки возвращала ноль? пустой ответ как-то не очевиден
-
-
Кто б еще доку по кликхаузу зазеркалил, для украиских коллег...
-
-
-
Спасибо!
-
а что, https://clickhouse.yandex даже заблокировали?ClickHouse DBMS
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
-
жесть
-
Решили не морочиться с dpi :(
-
ага, такой dpi для бедных))
-
а зачем там dpi?
-
-
Отлично, спасибо
-
супер!
-
Спасибо!
-
-
немножко непонятно по словарям. У меня в /etc/clickhouse-server/config.xml дефолтная строчка: <dictionaries_config>*_dictionary.xml</dictionaries_config>
-
я создал файл /etc/clickhouse-server/hostnames_dictionary.xml который начинается с: <dictionary>
<name>hostnames</name> -
это правильно ?
-
Всё Ок.
Можно посмотреть подгруженные словари с помощью
SELECT * FROM system.dictionaries -
вот вопрос в том: надо ли <dictionary> заворачивать внутрть <dictionaries> ?
-
Надо, так как в одном файле можно объявить несколько словарей.
-
ага, вот это не очень очевидно было из документации
-
дальше там по select * from system.dictionaries вроде можно разобраться
-
-
Нет. Нативный интерфейс использует обмен данными только блоками как в Native формате.
-
-
Какая скорость сейчас и что ожидаете?
Только от замены RowBinary на Native разницы на порядки, скорее всего, не будет. Тем не менее, это возможно в экстремальных случаях, когда отправляете много типов фиксированной длины.
Если скорость недостаточная, то, как правило, есть другие причины. -
-
-
На типичных данных скорость вставки должна быть от 50 000 строк в секунду до 2 000 000 строк в секунду. Минимум - на широких таблицах с сотнями столбцов. Максимум - на таблицах с несколькими столбцами.
-
-
Что показывает top и perf top?
-
Это про вставку по одному? Или блоками?
-
Блоками. По одному - вообще не вариант.
-
-
-
По одной строке без буфера на своей стороне можно вставлять так:
- делаете POST запрос и начинаете писать данные;
- не заканчиваете отправку тела пока не записали в него достаточное количество строк или пока не прошло достаточно времени.
Таким образом, вы пишете по одной строке и буферизация данных происходит на стороне сервера (без использования таблиц типа Buffer).
Главное - делать мало отдельных HTTP запросов. -
-
-
Это не совсем сетевой буфер. Данные могут сразу уходить на сервер. Но сервер формирует из них блок до max_insert_block_size.
-
Может я не понимаю, а в чём потенциально замедление класть большое количество мелких строк на стороне КХ, если используется buffer. Я предполагал, что это просто сохранение в память. В kdb я делаю тоже самое. + думал что buffer позволит разогнаться даже быстрее.
-
Если на каждую строчку делается отдельный HTTP запрос с INSERT, то сложностью является обработка HTTP запроса и INSERT-а. Можно легко посмотреть в perf top, что именно тормозит. Обычно это всякий мусор типа создания временных объектов std::string, std::shared_ptr, аллокация буферов и т. п. Такие вещи, как оверхед на один запрос, вообще не оптимизировались.
-
-
^^^^ Эффективная ваставка "по 1 строке" #faq
-
В любом формате будет быстрее, если отправлять чанками, переходить на нативный не обязательно.
-
-
-
Извиняюсь, я переспрошу, так как не видел ответа - чанками это как-то можно осуществить чтобы не закрывать соединение?
-
-
Можно Transfer-Encoding: chunked
-
-
При создании на сервере, единственный аргумент - имя формата.
Пример: File(TabSeparated)
Будет использоваться файл в директории таблицы. Его имя - data.TabSeparated. С другими форматами - аналогично.
Для чтения готового файла, заранее подложите его в директорию таблицы.
Обычно движок таблиц FIle используется для программы clickhouse-local.
В этом случае ему можно передать второй параметр - произвольный путь к файлу или файловый дескриптор. Файловый дескриптор в виде 0, 1 или stdin, stdout. Пример: File(TabSeparated, stdin) -
Не будет.
-
А, т.е. схема ему не нужна? Правильно ли я понимаю что все столбцы будут в формате строк?
-
Схема нужна.
CREATE TABLE table (схема) ENGINE = File(TabSeparated) -
-
-
а покажите perf top целиком?
-
sha_tranform из кернел - это оооочень странно
-
в ядре оно используется разве что для SYN cookie
-
да и-то в последних ядрах заменили на ситихэш
-
-
-
-
-
а это точно из ядра, а не из clickhouse?
-
да, похоже с ядра http://elixir.free-electrons.com/linux/latest/ident/sha_transform
-
загааадкааа
-
В ClickHouse не используется просто так SHA.
-
-
там с —callgraph или как-то так можно видеть дерево вызовов
-
я бы лучше тыкнул энтер в perf top и посмотрел, откуда идет вызов этой функции
-
а в dmesg нет ничего в стиле "syn flood" ?
-
Не вижу
-
а файловая система случаем не ZFS?
-
Xfs
-
а вот, perf record -g -p
-
-
ого, из /dev/urandom читает?
-
похоже на то
-
очень много :)
-
-
DB::Settings::... вызывает такое поведение
-
DB::Settings::Set это что-то в кликхаусе, по названию оно не дложно бы вызываться слишком часто)
-
вот да
-
Ещё раз напишу что я вставляю по одной строке. Но тем не менее.
-
слушайте, у меня есть машина с такой нагрузкой
-
секнду
-
-
-
-
у меня вот так
-
но у меня не хттп протокол
-
я открываю базу 1 раз и пишу строки туда через С++ либу
-
По одной за insert?
-
-
Поодной да
- 23 May 2017 (98 messages)
-
SHA256 используется при проверке пароля, если для пользователя он указан в таком виде. Но порядок не совпадает, так как хэширование коротких строк - это по крайней мере миллионы в секунду, даже таким тяжёлым алгоритмом.
-
-
sudo perf top —call-graph dwarf
покажет более правильные стек-трейсы. -
-
а может цурл каждый раз открывает новое соединение?
-
и это вызывает валидацию пароля повторно?
-
В http протоколе пароль проверяется на каждый запрос. Нет сущности "пароль на соединение"
-
ну, видимо в этом и ответ, почему столько ша1 в выдаче
-
Пока ещё это не ответ. Не совпадает количество.
-
-
-
-
-
-
Joined.
-
-
после обновления до последней версии появилась ошибка во внешнем словаре: last_exception: Code: 36, e.displayText() = DB::Exception: Unknown key \'name[1]\' inside attribute section, e.what() = DB::Exception
ругается вот на это:
<name>created</name>
<type>DateTime</type>
<null_value>NULL</null_value>
хотя в мускуле поле (timestamp) селектится нормально, и до обновления работало нормально. Никто не знает в чем причина? -
<name> случайно не дублируется?
-
-
-
Мы планируем устроить хакатон по ClickHouse для frontend разработчиков. Основная тема - всевозможные визуализации данных, инструменты для работы с ClickHouse. Нужны ваши идеи :)
-
Здравствуйте. Можно ли найти пересечение двух массивов? Не смог найти подходящие функции.
Массивы содержат строки, и мне нужно найти элементы массива A, которые не содержатся в массиве B. -
идеи чего? проектов для хакатона?
-
Да.
-
Коллеги подсказали
SELECT arrayFilter(x -> NOT arrayExists(y -> (y = x), ['a', 'b', 'c'] AS B), ['b', 'c', 'd', 'e', 'f'] AS A) -
посмотреть на все возможные инструменты визуализации, сделать выводы, еще раз посмотреть, потом еще раз посмотреть, пересмотреть выводы, а потом запилить универсальную 👍🏻
-
и в open-source 😬
-
За один день трудновато.
-
-
-
-
-
т.е. надо на нативный попробовать переехать? Ок
-
-
а log_queries в настройках выставлена?
-
FR: Slow queries log #230
Feature request: In many databases there is "slow queries log" functionality. All information about query timing could be written to system table to keep track of all/exceeding-threshold queries. It could relate to Quotas functionality h...
-
-
-
Логгирование запросов включается настройкой log_queries. Настройка может быть изменена динамически, так же как все остальные настройки.
По-умолчанию включено везде в нашем пакете и отключено в пакете для сторонних пользователей.
Логгирование запросов полностью асинхронное. Запись сначала вставляется в очередь. Очередь блокирующая, но её максимальный размер достаточно большой, чтобы это не вызывало проблем. Затем запись из этой очереди достаёт отдельный поток и кладёт себе в массив. Периодически, этот поток сбрасывает массив, записывая данные в таблицу. Периодичность сброса по-умолчанию - 7.5 секунд. Записи, не сброшенные в таблицу, недоступны для чтения.
По-умолчанию, запись осуществляется в таблицу system.query_log. Если таблица для записи уже существует, то проверяется соответствие её структуры текущей структуре лога. Если она не соответствует, то существующая таблица сначала переименовывается в query_log_0 или query_log_1 и т. п, а затем создаётся новая таблица, как если бы её не было. Если таблица не существует, то создаётся новая таблица с движком MergeTree.
Проверка и создание таблицы осуществляется только один раз - при первой записи в лог. Эти действия (инициализация логгера) делаются синхронно (при первом запросе).
Периодичность сброса и имя таблицы могут быть настроены в конфиге:
<!— Лог запросов. Используется, только для запросов с настройкой log_queries = 1. —>
<query_log>
<!— В какую таблицу писать. Если таблицы нет, она создаётся.
При изменении структуры лога, старая таблица переименовывается и создаётся новая.
—>
<database>system</database>
<table>query_log</table>
<!— Интервал сброса данных в таблицу. —>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>
При штатном завершении работы сервера, данные тоже сбрасываются в таблицу.
Если при записи данных возникает ошибка, то данные теряются и ошибка пишется в обычный лог.
Логгирование производится в четырёх случаях:
В начале выполнения запроса.
При успешном завершении запроса.
В случае исключения до начала выполнения запроса.
В случае исключения в середине выполнения запроса.
Лог запросов не очищается автоматически. Для ручной очистки можно использовать запрос ALTER ... DROP PARTITION. -
#faq #query_log #log_queries
-
Joined.
-
Добрый день, что нибудь появилось для миграций в clickhouse ?
-
Точно говорю: действует
-
Ну это, select, insert :(
-
а как же алтер столбцов
-
создание новых таблиц и т.д.
-
Вот рад бы к вам как-то присоединиться. Мы как и многие делаем сейчас морду вокруг кликхауса
-
Делаешь новую таблицу и переливаешь туда
-
что к чему...
-
Яндекс дайте миграции(
-
Отлично! Пока ещё не анонсировали. Наверное это где-то в конце июня будет. Сейчас только собираем идеи.
-
А сами написать?)
-
за миграции -- минус минус.
-
это не первостепенная фича, первостепенная - кастомные шардирования)
-
и батчер)
-
о нет
-
)) блин
-
Trivial Buffer вмержили
-
оооо, дай доки)
-
На всякий случай предупрежу, что он ещё не разработан. Он вмержен для удобства последующей разработки.
-
а в чем ключевое отличие от обычноно буфера ожидается?
-
не знал, видел просто что вы его смержили )
-
В общем случае он ничем не лучше Buffer, и использовать его не надо.
Подходит для специфических кейсов - когда данные вставляются пачками, но всё-таки достаточно часто. И нужно сохранять порядок вставленных блоков, а также осуществлять дедупликацию блоков. -
тогда это не батчер
-
-
-
-
-
-
-
-
Месяц назад поменялся формат записей в Zookeeper-е. С версии 3 на версию 4. Теперь новую версию КХ нельзя откатить на более старую, ругается на
DB::Exception: Unknown ReplicatedMergeTreeLogEntry format version: 4
Есть простой способ все-таки откатиться? -
Joined.
-
Простого нет, лучше всё-таки не откатываться.
Есть только сложный. -
Наступил на баг https://github.com/yandex/ClickHouse/pull/810 . Надо либо откатываться, либо собирать из исходников версию с патчем :(Fix bugs in graphite rollup. by ztlpn · Pull Request #810 · yandex/ClickHouse
This PR fixes known problems with graphite rollup: destructive rollup with Time=0 if no pattern matches differences in row count for Path and Value columns missed output rows on the boundaries bet...
-
Баг присутствовал во всех старых версиях.
-
В логах ошибка "Sizes of columns doesn't match" появилась только в новых версиях (в 1.1.54135 не было). Но возможно я наступил еще в какой-то баг? Симптомы - растет количество несмердженных чанков, от этого растет потребление CPU, через пару дней cpu заканчивается совсем
-
Возможно, раньше не проявлялось по другой причине. Или я ошибаюсь.
Поставить версию из master будет нормально. Мы как раз сейчас из неё собираем релиз. Но ещё не факт, что она пойдёт в stable. -
Мы пользуемся моими костыликами... вполне устраивает на 12 нод
-
;) поучаствую
-
подскажите плз, есть ли что-то такое что нужно знать о джойнах но не указано в доке? у меня left и inner join дают одинаковые результаты
при том что в левой таблице на порядок больще строк чем в правой, КХ упорно выбирает все данные как по inner join'у -
например
select count() as raw, sum(uniq_weekly), sum(uniq_daily) from idstats where country_name = 'us'
дает что-то вроде 147933 │ 17636 │ 59033
но
select count(*) as raw, sum(uniq_weekly) as uniq_weekly, sum(uniq_daily) as uniq_daily, count(substep) as download from idstats any left join events using uid where substep = 'Download' and country_name = 'us'
дает 5735 │ 684 │ 2303 │ 5735 -
что как бы вообще не верно
-
Версия из мастера помогла, спасибо. Но вообще конечно повезло что уже пофиксили. Иначе не было бы дороги ни вперед, ни назад :(
-
Почитай в документации про разницу any/all join
-
оба варианта возвращают одно и то же
точнее разница там в пару единиц -
-
Подскажите плиз, что не так
CREATE TABLE default.uri_stat_cache_new ( date Date,
week_num UInt32,
hash1 UInt64,
hash2 UInt64,
modify_date AggregateFunction(max, DateTime),
url AggregateFunction(argMax, String, DateTime),
domain AggregateFunction(argMax, String, DateTime),
title AggregateFunction(argMax, String, DateTime),
site_id AggregateFunction(argMax, UInt32, DateTime),
count AggregateFunction(sum, UInt32)
) ENGINE = AggregatingMergeTree(date, (hash1, hash2, week_num), 8192)
INSERT INTO uri_stat_cache_new(date, week_num, hash1, hash2, modify_date, url, domain, title, site_id, count) SELECT date, week_num, hash1, hash2, maxState(event_date), argMaxState(url, event_date), argMaxState(domain, event_date), argMaxState(title, event_date), argMaxState(site_id, event_date), sumState(count) FROM uri_stat_cache GROUP BY date, week_num, hash1, hash2;
Данные заливает, но
вот этот запрос
SELECT week_num, hash1, hash2, update_date, count, argMaxMerge(url, update_date) FROM (SELECT week_num, hash1, hash2, maxMerge(modify_date) AS update_date, argMaxState(url, modify_date) AS url, sumMerge(count) AS count FROM uri_stat_cache_new GROUP BY week_num, hash1, hash2) LIMIT 10;
выдает: DB::Exception: Incorrect number of arguments for aggregate function argMaxMerge.
если убираю argMaxMerge(url, update_date) все ОК -
Все функции -Merge принимают один аргумент - состояние агрегатной функции. Для функции argMax, состояние уже содержит запомненные аргументы arg и max, и для объединения состояний (как и для любых других агрегатных функций) ничего больше не нужно.
-
-
Нет никакого смысла отправлять по одной строке в формате Native. Этот формат ориентирован именно на пачки данных.
-
-
-
-
Latency вставки - от сотен мс. Latency чтения от единиц мс. в самых простых случаях.
-
-
Делая вставки по 1 просто потом огребешь веселые мержи.
-
А чем буфер таблица не угодила?
- 24 May 2017 (75 messages)
-
-
-
-
-
Я просто объясню. Есть задача, на которую неплохо ложится кдб, которая имеет ~ аналогичную векторную структуру, при этом является довольно универсальной. У КХ тоже есть преимущества, но просто хочется понять основные моменты которые он сможет покрыть, а что не сможет. При этом, КХ и кдб кажутся довольно близкими родственниками.
-
-
Joined.
-
-
Например, найти имена поясов, соответствующих смещению
-
Таймзона — это же больше, чем смещение по utc
-
вот с апдейтами самая грустная ситуация в вещах типа user agent
-
у нас очень много нераспознающихся useragent и приходится править тот код, который парсит, а следовательно приходится апдейтить таблицу
-
апдейтить её нельзя
-
-
Ну так да
-
Или сделать внешний словарь в кх в памяти на цсв
-
сейчас у нас 275961 разных useragent
-
Немного
-
ну это ж вообще не о чем.
-
Поместится во что угодно
-
а если я захочу сделать распределение по операционным системам, то это будет норм?
-
А почему это должно стать не норм?
-
кликхаус сделает 270 тыс лукапов к словарю, приклеит и всё агрегирует?
-
сейчас у нас поле операционная система лежит в строке
-
Э
-
а тут будет снаружи
-
-
ну словарь же по факту С++ ный хэш
-
а это ОЧЕНЬ БЫСТРО
-
Кликхаус внешние словари подтягивает в память с некоторой частотой. Это хэш-таблица
-
оок
-
звучит что надо именно так делать
-
Только правильно настройте частоту обновления и всё такое
-
std::unordered_map C++11: 2.0 mega ops per second
-
ну вот как-то так в синтетических тестах оно работает :)
-
std::map: 0.8 mega ops per second
-
ну и это на 1 поток процессора, ессна
-
Обычно в базе таймзон есть набор псевдотаймзон типа Etc/GMT-3, только там оффсеты идут в другую сторону - например Etc/GMT-3 это сейчас как раз московское время.
-
Подскажите пожалуйста, когда стоит увеличивать гранулированность индекса? Как я понимаю чем больше строк в куске тем меньше места занимает вся таблица?
-
Спасибо! Этот вариант мне подходит.
-
Такой вопрос, нормально ли кликхаус скушает такую выборку в селекте - concat(toString(round(click/show*100)), '%') as CTR, или лучше такие вычисления делать уже в коде? (на тестовом стенде, естественно всё работает прекрасно, интерсно именно не будут ли тупить вычисления на больших объёмах данных)
-
Если я мигрирую zookeeper с трёх нод на другие три в несколько этапов:
0. Машинки 1, 2 и 3 надо перевезти на 1, 4 и 5 с переналивкой первой.
1. Наливаю машины 4 и 5, добавляю их в кластер, жду, пока догонится ZK
2. Переналиваю машину 1, восстанавливаю на ней ЗК
3. Убираю ноды 2 и 3
Если я в этот момент пропишу в clickhouse все 5 нод, то он себя будет нормально чувствовать при пертурбациях?
Если прописать дополнительные две ноды до того, как они станут доступны, как он поведёт себя в этом случае? -
столкнулся вот с таким багом, который уже в статусе “закрыт”
https://github.com/yandex/ClickHouse/issues/246
мои комментарии внизу тикета. кто может что посоветовать?Logical error: zero number of streams requested · Issue #246 · yandex/ClickHouseUbuntu 14.04, установлена по документации, конфиги дефолтные. Запросы вида CREATE TABLE, SHOW CREATE TABLE проходят успешно, но на SELECT 1, SELECT * FROM и т.п выдает ошибку: Received exception ...
-
Получается что для того что бы это правильно сделать, можно не делать миграцию, а сначала сделать словарь, попробовать и лишь потом мигрировать таблицу
-
Ну вам не нужна миграция, чтобы попробовать запросы, которые используют внешние словари
-
Ага, вот я об этом
-
5 живых реплик - нормально. Как раз хороший способ для миграции реплик между серверами - добавить новые реплики, потом удалить старые.
В редких случаях может быть проблема с увеличением нагрузки на сеть или с количеством одновременных соединений для скачивания данных, а также с нагрузкой на диск при скачивании с одной реплики большим количеством других. -
Увеличивать гранулированность индекса (делать больше 8192) почти никогда не стоит. Изредка имеет смысл уменьшить.
-
Я про ноды зк, кх никуда не едет и только меняется конфиг, который относится к zookeeper
-
Гранулированность индекса влияет на время обработки коротких запросов (уменьшение index_granularity приводит к уменьшению latency) и на потребление оперативки (уменьшение index_granularity приводит к кратному увеличению потребления оперативки). Текущее потребление оперативки можно посмотреть в таблице system.parts - столбцы, относящиеся к primary key.
-
Если сильно уменьшить index_granularity, то latency сильно меньше не будет, но вот оперативки будет потребляться больше.
-
Про ноды ZK не могу сказать - постоянно с 5 нодами не пробовали работать. Вроде бы наши админы один раз делали миграцию ZK как раз путём временного увеличения числа нод.
-
Зря закрыт. Видимо закрыли после сообщения "выставить вручную max_threads помогает". Придётся разбираться дальше.
Можете дать мне ssh+sudo доступ к своей виртуалке, где воспроизводится проблема (пишите в личку). А то нам придётся заводить такую же виртуалку самим, а до этого ещё не дошли руки. -
Выложили на сайт презентацию с митапа в Екатеринбурге:
https://clickhouse.yandex/presentations/meetup6/#
(пока доступна только первая, вступительная презентация)
А также с конференции UWDC в Челябинске:
https://clickhouse.yandex/presentations/uwdc/#cover -
спасибо, буду сапёром, значит
-
-
-
Незнаю как в С++, но в java client динамически менять состав ZK серверов нельзя было. Оно резолвило все при старте и потом работало только с ними.
-
-
-
» Движок таблиц Dictionary, движок баз данных Dictionary
То есть появятся словари на основе таблиц? Или словари будут видны как таблицы? -
Было бы здорово, так как добавлять в словарь сейчас не совсем удобно.
-
Это я нашел в разделе планов развития в Екатеринбургской презентации
-
Любые словари будут доступны в виде таблиц, позволяющих посмотреть содержимое словаря.
-
-
Скажите плиз, а есть возможность принудительно дернуть обновление словаря?
-
-
Пока нет. Если смотрели слайды митапа, там есть пункт - запрос SYSTEM - как раз для этого.
-
Забавно, что я как раз сейчас это исправляю.
-
Если не средствами SQL -- то самое простое touch файла с описанием словаря.
-
спасибо
-
Joined.
-
Joined.
-
-
- 25 May 2017 (105 messages)
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
Если именно 15 минут надо, то можно так
toDateTime(intDiv(toUInt32(created_at), 900)*900)
вместо toStartOfFiveMinute -
А как можно обновить словарь средствами SQL?
-
Пока никак. Это в roadmap Яндекса
-
Joined.
-
Здравствуйте!
Проблема с запросом в БД. При увеличении диапазона, количество записей выдает меньше
Может это связано с типом столбца Float?
Как можно решить данную проблему. Between тоже не помогает -
-
/stat@combot
-
-
Забавно)
-
А сколько rows processed во втором случае?
-
-
-
-
во стором случае processed 47.06
-
да, столбец входит в первичный ключ
тип x Float64 -
таблица нереплецированная
-
-
/stat@combot
-
/stat@combot
-
Ребята, не пойму куда копать. Все работало прекрасно, а сейчас вставка работает катастрофически медленно. Через клиента 74 СЕКУНДЫ! на одну строку. Таблица в которую делаю вставку - не реплицированная, но рядом есть реплицированные.
В логах такое:
2017.05.25 11:47:50.085540 [ 24 ] <Error> void DB::StorageReplicatedMergeTree::queueUpdatingThread(): Code: 287, e.displayText() = DB::Exception: Unknown ReplicatedMergeTreeLogEntry format version: 4, e.what() = DB::Exception, Stack trace:
0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x1e6eab6]
1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10be16f]
2. clickhouse-server(DB::ReplicatedMergeTreeLogEntryData::readText(DB::ReadBuffer&)+0xd5b) [0x1fc5eab]
3. clickhouse-server(DB::ReplicatedMergeTreeLogEntry::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Stat const&)+0x152) [0x1fc61f2]
4. clickhouse-server(DB::ReplicatedMergeTreeQueue::pullLogsToQueue(std::shared_ptr<zkutil::ZooKeeper>, std::shared_ptr<Poco::Event>)+0xe0c) [0x1fcee4c]
5. clickhouse-server(DB::StorageReplicatedMergeTree::pullLogsToQueue(std::shared_ptr<Poco::Event>)+0x60) [0x1f32ad0]
6. clickhouse-server(DB::StorageReplicatedMergeTree::queueUpdatingThread()+0x64) [0x1f34f74]
7. clickhouse-server() [0x36c3daf]
8. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fa3a205e6ba]
9. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fa3a167f82d]
Вставка идет именно в MergeTree. В логах ошибки про ReplicatedMergeTree -
-
-
-
Это происходит, если одну реплику обновить до свежей версии, а другую - нет. В этом случае репликация не работает и данные не мержатся. Надо обновить оставшиеся реплики - тогда данные дореплицируются и всё будет Ок.
-
Joined.
-
Так я вставляю в обычную таблицу, не реплицируемую
-
-
например так
SELECT
number,
sum(v)
FROM
(
SELECT number
FROM system.numbers
WHERE (number % 15) = 0
LIMIT 4
)
ANY LEFT JOIN
(
SELECT
number,
1 AS v
FROM system.numbers
WHERE ((number % 15) = 0) AND (number NOT IN (15, 45))
LIMIT 4
) USING (number)
GROUP BY number
ORDER BY number ASC -
Да, на самом деле версии серверов разные оказались. Но ведь я вставлял в обычную таблицу, не реплицируемую. Единственный момент, что названия таблиц одинаковые, только базы разные.
Server1:
dev.table1 (not replicated)
dev.table2 (not replicated)
prod.table1 (replicated)
prod.table2 (replicated)
Server2:
prod.table1 (replicated)
prod.table2 (replicated)
Вставляю на dev.table1 -
-
-
-
А как у вас изменились данные?
-
-
пересоздать с указанием POPULATE
-
-
-
-
-
-
-
-
-
Проверьте количество реплик и их очереди с помощью SELECT * FROM system.replicas
Посмотрите на множество реплик в ZK в ноде replicas.
Иногда бывает так, что есть реплики, про которые забыли. -
Прочитал ниже, что уже разобрались.
-
Имена таблиц никак не зависят от пути в ZK (который для удобства может содержать в себе имя таблицы).
-
-
Можно складывать DateTime с числом секунд.
-
-
-
Да.
Native уже можно рекомендовать, так как он используется некоторыми драйверами для C++, Go, .Net, Python, R. Совместимость гарантируется. Фразу про не рекомендуется можно убрать. -
-
Поколоночная вставка? А можно поподробнее?
-
Не очень уверен про КХ, но смысл в том, что данные передаются в формате: колонка1: массив1 данных; колонка2: массив2 и ТД => для вставки не надо делать flip, а по сути достаточно одного memcpy
-
@milovidov_an Алексей, а нету планов сделать нэтив / официальную либо для С++?
-
-
текущая вполне спарвляется с задачей, но есть несколько неприятных бажков и хочется оптимизации без выделения памяти на каждом шагу:(
-
А он тут есть? :)
-
затяните его)
-
Я не знаю что такое с artpaul, но мой клиент на нём тормозит жутко. 20 вставок в секунду.
-
-
у меня вроде около 200 вставок, но есть жалобы на потерю данных :/
-
хз на чьей они стороне вот, вряд ли на кликхаусе
-
Жалобы на клиент https://github.com/artpaul/clickhouse-cpp ?GitHub - artpaul/clickhouse-cpp: ClickHouse C++ client library
ClickHouse C++ client library. Contribute to artpaul/clickhouse-cpp development by creating an account on GitHub.
-
угумс:(
-
-
cамое вот страшное вот это https://github.com/artpaul/clickhouse-cpp/issues/18Unexpected exception when Clickhouse daemon restarts · Issue #18 · artpaul/clickhouse-cpp
Hello! I have the following code to push data to CH: try { clickhouse::Block block; auto packet_direction = std::make_shared(); packet_direction...
-
приложение разносит вдребезги при перезапуске CH демона + подозрения на потери данных где-то перед вставкой
-
Можно писать в личку @artmkin
Этот драйвер разрабатывается независимо, в свободное время. -
-
там нужно собирать столбцы данных
-
имя - aaa, bbb, ccc
-
возраст - 11, 22, 44
-
и потом инсертом вгонять в базу
-
-
-
не, оно работает - это железно
-
Всё равно не понимаю
-
echo 'INSERT INTO t VALUES (1),(2),(3)' | POST 'http://localhost:8123/'
-
ну вот пример из документации
-
-
не, там дальше идет вставка блоками
-
// TODO check connection
-
не хватает только вот этой штуки :)
-
Для нативного протокола, отправляется запрос INSERT без данных. Затем отдельными блоками - данные в родном формате.
-
-
-
Понял.
-
так что посоветуете? Хранить данные в float32 и Обновить clickhouse?
-
-
ого..не float64, a float32
-
Вы правы
-
обновление clickhouse решить проблему? Или лучше float64 использовать
-
-
спасибо!
-
Выложили новую версию ClickHouse - 1.1.54236.
-
-
или теперь будут с -debug?
-
Что-то не то залилось. Сейчас посмотрим.
-
2017.05.25 13:09:57.227116 [ 120 ] <Error> BaseDaemon: ########################################
2017.05.25 13:09:57.240811 [ 120 ] <Error> BaseDaemon: (from thread 62) Received signal Segmentation fault (11).
2017.05.25 13:09:57.240842 [ 120 ] <Error> BaseDaemon: Address: NULL pointer.
2017.05.25 13:09:57.296645 [ 120 ] <Error> BaseDaemon: 1. /lib/x86_64-linux-gnu/libc.so.6(+0x16e5c0) [0x7f79b906e5c0]
2017.05.25 13:09:57.301385 [ 120 ] <Error> BaseDaemon: 2. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x34e6845]
2017.05.25 13:09:57.301416 [ 120 ] <Error> BaseDaemon: 3. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f79b99e56ba]
2017.05.25 13:09:57.301433 [ 120 ] <Error> BaseDaemon: 4. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f79b900682d]
Уже второй раз упал инстанс вот с такой ошибкой, у кого-то было? Версия кликхаус 1.1.54187 -
-
Обновитесь до свежей версии. Можно собрать из master или последнего stable.
-
Спасибо, попробую
-
- 26 May 2017 (46 messages)
-
Оно там не то что бы игнорируется, предположим что у вас есть 2 запроса:
а)
INSERT INTO table VALUES (value_a, value_b, value_c);
б)
INSERT INTO table (a, b) VALUES (value_a, value_c);
на сервер отправляется запрос без данных, т.е. все что после VALUES отбрасывается и в случае "а" сервер ответит клиенту с указанием всех колонок в таблице и их типами в том порядке в котором ожидает их принять,
в случае "б" вернет набор только колонок a и b, причем в указанном в запросе порядке -
это мало, у меня есть тестовый кейс для выявления одного бага в библиотеке, там поднимается КХ в докере и к нему идут очень много мелких запросов (~1000 строк) получается где-то 300 rps, но после этого КХ до бесконечности сыплет в логи
lib/clickhouse/data/default/t1/tmp_20380101_20380118_41976_299766_1, e.what() = File access error
2017.05.26 09:39:56.270920 [ 3 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Poco::Exception. Code: 1000, e.code() = 39, e.displayText() = File access error: directory not empty: /var/lib/clickhouse/data/default/t1/tmp_20380101_20380118_41976_299766_1, e.what() = File access error
2017.05.26 09:39:56.319561 [ 10 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Poco::Exception. Code: 1000, e.code() = 39, e.displayText() = File access error: directory not empty: /var/lib/clickhouse/data/default/t1/tmp_20380101_20380118_41976_299766_1, e.what() = File access error
2017.05.26 09:39:56.338284 [ 5 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Poco::Exception. Code: 1000, e.code() = 39, e.displayText() = File access error: directory not empty: /var/lib/clickhouse/data/default/t1/tmp_20380101_20380118_41976_299766_1, e.what() = File access error -
После обновления с версии 1.1.54231 до 1.1.54236
select distinct стал очень долгим и падает по таймауту, а раньше не больше 1-2 секунд отрабатывал -
Также с последней версией не работает фетчинг колонок таблицы в JDBC драйвере
-
Последняя версия драйвера? Если это не таймаут, и есть подозрение что дело в драйвере можно создать задачу в него с описанием ошибки.
-
Да, так и сделаю
-
В логах сервера выглядит это так:
-
2017.05.26 12:19:43.404500 [ 4 ] <Error> HTTPHandler: Code: 47, e.displayText() = DB::Exception: Unknown identifier: default_type, e.what() = DB::Exception, Stack trace:
0. clickhouse-server(StackTrace::StackTrace()+0x1d) [0x5ee3619]
1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x46) [0x374eb02]
2. clickhouse-server(DB::ExpressionAnalyzer::getRequiredColumns()+0x88) [0x5d7347c]
3. clickhouse-server(DB::InterpreterSelectQuery::executeFetchColumns()+0x8b) [0x5d2fe03]
4. clickhouse-server(DB::InterpreterSelectQuery::executeSingleQuery()+0x32) [0x5d2e898]
5. clickhouse-server(DB::InterpreterSelectQuery::executeWithoutUnion()+0x109) [0x5d2e853]
6. clickhouse-server(DB::InterpreterSelectQuery::execute()+0x38) [0x5d2e3f2]
7. clickhouse-server() [0x5d9fd5a]
8. clickhouse-server(DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, DB::Context&, std::function<void (std::string const&)>)+0x258) [0x5da0cbc]
9. clickhouse-server(DB::HTTPHandler::processQuery(Poco::Net::HTTPServerRequest&, HTMLForm&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&)+0x1fbb) [0x3762bd9]
10. clickhouse-server(DB::HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&)+0x1b2) [0x3763b40]
11. clickhouse-server(Poco::Net::HTTPServerConnection::run()+0x33e) [0x67d9f4e]
12. clickhouse-server(Poco::Net::TCPServerConnection::start()+0x24) [0x67c0e96]
13. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x15c) [0x67db18e]
14. clickhouse-server(Poco::PooledThread::run()+0x85) [0x69be803]
15. clickhouse-server() [0x698cf1d]
16. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xdc) [0x698cc0e]
17. /lib/x86_64-linux-gnu/libpthread.so.0(+0x8184) [0x7f5b6afc2184]
18. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f5b6a5ddbed] -
Done.
-
@artmkin огромное спасибо!)))
-
-
Всем привет! Забавную вещь наблюдаем с clickhouse -
1) добавили в таблицу колонку event_type типа String,
2) Сделали insert нескольких записей в таблицу, где значение event_type = 'click' и 'view' и некоторые другие
3) Пробуем делать простые select where event_type = 'click' - получаем пустую выборку. Тоже самое со значением view. -
при этом, если селектить по другому значению, например, render - то селес работает корректно. Возникло ощущение, что слова click и view возможно как-то зарезервированы.
-
-
после добавления колонки мы пересоздали полностью таблицу, к слову таблица типа MergeTree
-
Странная проблема. Пока не сталкивались с таким.
Конечно, ничего не зарезервировано. Это было бы слишком глупо.
Есть минимальный кейс? -
Скажите, DISTINCT чего именно делается (каких столбцов)?
Проверим. Регрессия производительности - серьёзная проблема. -
Всем привет. У меня такая ситуация - есть таблица статы и обычная вьюха, тянущая данные из этой таблицы, плюс дополнительные
вычисления. Вьюха создана запросом, вида
CREATE VIEW V AS SELECT *, expr1 as col1, expr2 as col2 FROM Table;
Вопрос - при добавлении колонки в таблицу вьюха ее не видит. Есть ли возможность обновлять вьюху, не пересоздавая ее
на каждом альтере основной таблицы? Спасибо) -
Возможно, стоило подождать пока КХ смерджит колонку со всеми кусками или зафорсить событие выполнив OPTIMIZE по таблице
-
С чего бы это требовалось. Всё должно работать.
-
Можно воспользоваться для той же задачи ALIAS столбцами:
https://clickhouse.yandex/reference_ru.html#%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BF%D0%BE%20%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8EДокументация ClickHouse | Документация ClickHouseClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
Joined.
-
Joined.
-
-
Пока не встречал такого поведения.
-
-
-
-
-
-
Это может зависеть от эмулятора терминала. Какой вы используете? Из какой программы?
-
-
-
Для нас требуется, чтобы терминал поддерживал такие escape-последовательности:
#define SAVE_CURSOR_POSITION "\e7"
#define RESTORE_CURSOR_POSITION "\e8"
#define CLEAR_TO_END_OF_LINE "\033[K"
Можно проверить с помощью echo -e
Также есть похожие escape-последовательности, которые могут заменить первые две: \e[s, \e[u -
echo -e "hello \e7world \e8abcde"
echo -e "hello \e[sworld \e[uabcde"
Что выводит? -
-
-
Родной cmd в windows научился нужным кодам
-
В windows 10 creators update
-
-
Сегодня уже есть правильные пакеты.
-
У меня тоже самое на маке, причем не важно, локальный КХ или на удаленном убунтовом сервере
-
-
долбани команду env, покажи выведет. Из маковского терминала или кастомный клиент?
-
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/71/tl84c0000gp/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.HpxLqk/Render
TERM_PROGRAM_VERSION=388
TERM_SESSION_ID=
USER=user
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.iW5qU/Listeners
__CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/Users/user
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/user
LOGNAME=user
LC_CTYPE=UTF-8
SECURITYSESSIONID=
_=/usr/bin/env -
- 27 May 2017 (17 messages)
-
Добрый день! Скажите, а кто-нибудь использовал КХ+Logstash?
-
-
Всем привет!
-
sudo service clickhouse-server status
/etc/init.d/clickhouse-server: line 274: running_processes: command not found
/etc/init.d/clickhouse-server: line 274: [: -eq: unary operator expected
clickhouse-server: process unexpectedly terminated -
Ubuntu 14.04, версия: 1.1.54236
-
start/stop/restart работают, status отсох :)
-
-
-
можно попробовать взять содержимое https://raw.githubusercontent.com/yandex/ClickHouse/master/debian/clickhouse-server.init и положить в /etc/init.d/clickhouse-server:
-
Можно сделать
sudo apt-get --reinstall -o Dpkg::Options::="--force-confask" install $package
Должно помочь -
Joined.
-
Привет. А кто может по табиксу подсказать? Можно ли его использовать в прокси режиме. Что бы доступ до кх был только с сервера с табиксом, но не у клиентов?
-
-
-
Пока только nginx в прокси на ch, в настройках tabix указывая http://ip:порт/
-
табикс дополнительные проверки не делает
-
- 28 May 2017 (66 messages)
-
-
done
-
-
-
@Felixoid спасибо, помогло :)
-
а можно ли в внешнем словаре в layout совместить complex_key_hashed и cache ?
-
мне бы распарсить useragent и запихать в кеш
-
но ключом будет строка
-
-
Неоптимально но подойдет. Когда я писал свою хранилку для стоковых данных то получилось сделать ряд хороших оптимизаций
-
В кх их нет, но он сам по себе крут
-
complex_key_cache
-
-
а требования есть ? я вот о opentsdb для такой задачи думаю что хорошо подойдет
-
-
Opentsdb о другом
-
Вообще
-
Короче. Лить стакан в кх можно
-
а что такое стоковые данные, простите, за невежливость?
-
-
а
-
Стакан это строка из, скажем,40 чисел: отсортированные по цене предложения на покупку и продажу с ценой и обьемом
-
Они характеризуются сильными колебаниями в середине и неподвижностью по краям,так что межстрочная компрессия даст потрясающий результат
-
-
имейте ввиду:
- низкие требования к консистентности данных; -
это неотъемлемое свойство данных с биржи. Совершенно нормально получить мусор, скачки на 3 порядка, старые данные, повторы и прочий мусор. Если московская биржа ещё более менее что-то приличное отдает, то американские вместе дают жуткий шум
-
-
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
можете подсказать по словарям которые через executable
-
указал как CSVWithNames и получаю такую ругань:
-
Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected , before: useragent","os_family","os_type","os_version_major","os_manufacturer","browser_family","browser_type","browser_version_major","browser_manufacturer"",,,0,,,,0,\n:
Could not print diagnostic info because two last rows aren't in buffer (rare case)
: (at row 1), e.what() = DB::Exception -
при этом:
-
# echo "Lavf53.32.100" | /opt/retroview/scripts/useragents.erl dict
"useragent","os.family","os.type","os.version_major","os.manufacturer","browser.family","browser.type","browser.version_major","browser.manufacturer"
"Lavf53.32.100",,,0,,"mag","stb",0,"infomir" -
что должен отдавать скрипт?
-
то есть можно не запарываться и ставить кликхауз, ибо биржи сами с данными бывает лажают?
-
-
Чистить надо сразу
-
На входе
-
-
Всем привет.
Подскажите, пожалуйста, возможно ли как-то посмотреть % сжатия данных по определенным столбцам в таблицы? -
Что-то такое ощущение, что колонки типа array практически не жмутся
-
-
Конечно. Есть база заточенная под стоки - кдб. Собственно во многих банках именно она.
-
Нашел в system.columns, в сжатом виде в 10 раз меньше, оригинального. Но все-равно, мне кажется мало. Массивы строковые, и значения практически одинаковые(на 200м эвентов(массивов), всего 1-2к уник строковых значений, с длинной 20-25 симоволов, в массиве в среднем 40 элементов)
Помню в конфигах были какие-то настройки по сжатию. Они могут помочь? или не значительно? -
Для поиграть сгодится
-
Вот незадача: cache executable наплодил зомбей, cache http жалуется на connection refused
-
Сочувствую
-
Это оффтоп, но инфлакс не работает с мало мальски большими базами и запросами. Можешь погуглить какие в среднем проблемы с ним у людей сейчас.
-
двадцать мегабайт =)
-
-
может кто-нибудь посоветовать, как отладить ситуацию с тем, что кликхаус говорит, что не может подключиться при исполнении запроса, в котором участвует доступ к http dictionary?
-
-
я думал он уже умер давно))) база теряющая данные...
-
ой. а есть прувы ? если не против давайте на эту тему в @metrics_ru тут не релевантно.
-
@the_real_jkee 700! поздравляю.
-
Ага, уже 700. Всех поздравляю!
-
Ура!)
-
помог strace. Я прописал 127.0.0.1, а коннект идет к [::1]
-
можно хранить Nested с массивами Keys и Values, для некоторых задач подходит.
-
Joined.
-
-
select * from system.columns limit 4
-
-
-
- 29 May 2017 (76 messages)
-
так, насчёт словарей такие замечания:
-
1) во-первых в http источник КХ засовывает несколько раз один и тот же ключ
-
2) во-вторых какая-то проблема с превращением 127.0.0.1 в [::1]
-
3) следующее — не очень понятно какой был рассчетный паттерн использования executable: запускается на очень маленькое количество ключей и часто дохнет. Хорошо бы поднимать процесс и долго его кормить
-
^ насчет ipv4/ipv6 недавно обсуждали
может с этим как-то связано -
у меня софтина не слушает на ipv6
-
-
-
обновил tabix, fix'ы и новые фичи
https://tabix.io/doc/Changelog/#2017-05-29Changelog - TabixTabix DB Gui
-
<listen_host>::</listen_host>
-
ага, поможет, если 127.0.0.1 будет?
-
я пока сделал по-другому: я дал не 127.0.0.1, а внешний хостнейм, который разрезолвился в ipv4
-
а с dictionary и кешем ещё вопрос в том, что вот как бы так сделать, что бы кеш можно было сделать персистентным, т.е. хорошо бы что бы был файл, а если ключа нет в файле, тогда идти за executable к http серверу
-
Received exception from server:
Code: 359. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Table fastnetmon.host_metrics was not dropped.
Reason:
1. Table size (57.24 GB) is greater than max_table_size_to_drop (50.00 GB)
2. File '/var/lib/clickhouse/flags/force_drop_table' intedned to force DROP doesn't exist
How to fix this:
1. Either increase (or set to zero) max_table_size_to_drop in server config and restart ClickHouse
2. Either create forcing file /var/lib/clickhouse/flags/force_drop_table and make sure that ClickHouse has write permission for it.
Example:
sudo touch '/var/lib/clickhouse/flags/force_drop_table' && sudo chmod 666 '/var/lib/clickhouse/flags/force_drop_table'.
0 rows in set. Elapsed: 0.222 sec. -
занятная защита :)
-
-
-
не, мне нравится)
-
типа данные менее 50 гигов не шибко ценны, а вот больше - не смей, мужик!)
-
-
-
Добрый день скажите плиз можно ли какие-то метрики с кликхаус снять для графита? может есть какая-то тулза ?
-
ClickHouse/graphouse
Graphouse allows you to use ClickHouse as a Graphite storage. - ClickHouse/graphouse
-
эт про другое )
-
-
привет)) ты понял о чем я спрашиваю)
-
как-то снять нагрузку количество запросов и т.д. чтобы в графане мониторить. где в кликхаус искать?
-
-
и все же. какие именно? где рыть? может я в доке упустил про это
-
Server/config.xml ?
-
-
-
-
-
-
вижу. там две секции
-
мне только одну расскоментить и порт поменять
-
-
спасиб
-
Привет!
Как на КХ лучше написать запрос, который на большой таблице фактов посчитает по выбранному измерению сумму последних (по времени) N фактов? -
@Civiloid смотрю в графане все статы по нулям, хотя запросы идут. там две секции метрики и события
-
я пока не дошел до мониторинга кликхауса ) пока просто играюсь
-
там только статы есть по AsynchronousMetrics
-
-
-
-
а где можно глянуть описание по этим ключам стат? а то не совсем понятно что есть что
-
-
я боюсь в комментах в коде )
-
@Yandex дайте доку по метрикам )
-
MarkCacheBytes MarkCacheFiles вот по этим только есть. какой-то кеш
-
Всем привет! Может кто подсказать, как скормить в словарик данные через АПИ проекта, отдавая JSON?
-
или там только tsv?
-
Документация ClickHouse | Документация ClickHouse
ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries
-
CSV, TSV и куча другого
-
А вниешние словари то соберутся если указать "кучу всего"?
-
должны собраться
-
Всем привет!
Подскажите, есть какое либо ограничение на вложенные запросы по объему данных? Будет ли КХ использовать диск, если не будет хватать памяти? Есть ли на вложенные запросы ограничения? -
-
-
-
-
С 2039 по 1900... Интересно...
-
-
-
для такого словаря, кажется, должна работать dictHas