@clickhouse_ru

Страница 561 из 723
LeiDruid
19.06.2018
04:31:18
Всё ещё актуально

Kirill
19.06.2018
05:42:38
Дорогая ли это операция, как он будет переживать частые удаления и тп
Он перепишет все куски который попадут под WHERE

Ну вот он упал и не поднимается.
Он может и поднимается, когда поднимится он помержит куски, если проблема в частых INSERT - просто так не делайте, другой вопрос что у вас там с ключем партиционирования?

Timur
19.06.2018
05:47:00
Он перепишет все куски который попадут под WHERE
Спасибо, как выкатят в stable буду тестировать

Google
Wolf
19.06.2018
06:03:10
Timur
19.06.2018
06:23:13
Вот и мне так думалось

Николай
19.06.2018
06:24:34
Всем привет, впервые поставил кликхаус, хотел спросить совета. У меня есть две таблицы в постгрес - гаражи и история их цен. История цен ежедневно пополняется и мне надо делать к этой таблице аналитические запросы, типа средняя цена за каждый месяц. Хотел узнать как мне лучше перенести эти 2 таблички в кликхаус, разбить их на 2 как и было в постгрес или собрать в одну?

Николай
19.06.2018
06:25:41
Спасибо, а что значит как словарь? Тип данных такой в КХ?

Ага, вроде нашел, еще раз спасибо.

Kirill
19.06.2018
06:26:14
Да, оставляете ее в постгресе, а его подключаете как словарь

Gubaydullin
19.06.2018
06:56:43
Доброе утро

optimize table hit partition '201301' final

схлопывает данные партиции

а как посмотреть все партиции что есть?

Kirill
19.06.2018
06:57:19
в system.parts

Google
Kirill
19.06.2018
06:57:46
:) desc system.parts DESCRIBE TABLE system.parts ┌─name──────────────────────────────────┬─type─────┬─default_type─┬─default_expression─┐ │ partition │ String │ │ │ │ name │ String │ │ │ │ active │ UInt8 │ │ │ │ marks │ UInt64 │ │ │ │ marks_size │ UInt64 │ │ │ │ rows │ UInt64 │ │ │ │ bytes │ UInt64 │ │ │ │ modification_time │ DateTime │ │ │ │ remove_time │ DateTime │ │ │ │ refcount │ UInt32 │ │ │ │ min_date │ Date │ │ │ │ max_date │ Date │ │ │ │ min_block_number │ Int64 │ │ │ │ max_block_number │ Int64 │ │ │ │ level │ UInt32 │ │ │ │ primary_key_bytes_in_memory │ UInt64 │ │ │ │ primary_key_bytes_in_memory_allocated │ UInt64 │ │ │ │ database │ String │ │ │ │ table │ String │ │ │ │ engine │ String │ │ │ └───────────────────────────────────────┴──────────┴──────────────┴────────────────────┘

Gubaydullin
19.06.2018
06:59:00
спасибо

Константин
19.06.2018
07:28:55
Добрый день!

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

в папке: /var/lib/clickhouse/data/default/vast_tracking/default@192%2E168%2E0%2E21:9000 .bin файло на 54 Гб скопилось

как заставить его их передать?

и что делать если время от времени, на разных нодах пропадает значение из файла increment.txt?

prll
19.06.2018
07:33:06
как заставить его их передать?
А что в логе? Возможно ли сходить клиентом с серверв где файл на тот адрес котрый в имени файла? Можно попробовать сервер перезагрузить

Evgeny
19.06.2018
08:09:48
Привет! Есть java/spring приложение, которое выводит красивые картинки по данным из КХ. Для выборки по большому in () пробую создать временную таблицу, как советует документация, чтобы не перечислять миллионы полей в запросе Создается таким кодом //все бины выбросил, чтобы не мешали понимаю проблемы private String createTempTable(String columnName) { DataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://localhost:8123/default"); NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); String tempTableName = getTempTableName(); String sql = "CREATE TEMPORARY TABLE " + tempTableName + " (" + columnName + " String) ENGINE = Memory"; jdbcTemplate.update(sql, Collections.singletonMap("1", 1)); return tempTableName; } Получаю такую ошибку PreparedStatementCallback; uncategorized SQLException for SQL [CREATE TEMPORARY TABLE temp20180619T095621923 (userId String) ENGINE = Memory]; SQL state [null]; error code [113]; ClickHouse exception, code: 113, host: localhost, port: 8123; Code: 113, e.displayText() = DB::Exception: There is no session, e.what() = DB::Exception

Подскажите, куда копать?

M
19.06.2018
08:13:23
Подскажите, куда копать?
Время жизни временных таблиц - это сессия. Чтобы создать и потом считать нужно передавать параметр session_id=<ANY_RANDOM_STRING>

Evgeny
19.06.2018
08:22:53
о, спасибо!

Sultan
19.06.2018
08:43:47
Добрый день, коллеги. Хочу заливать в КХ dns query log (дата время, ip, имя хоста). конструкция такая; rsyslog->kafka->КХ. Одна беда - с кафкой раньше не сталкивался. Прошу подсказать - в каком формате из rsyslog отправлять в kafka. Заранее благодарю. Если есть более оптимальные варианты - тоже хорошо. PS: rsyslog - то еще развлечение, пока лог распарсил - поседел...

Tima
19.06.2018
08:53:31
Добрый день, коллеги. Хочу заливать в КХ dns query log (дата время, ip, имя хоста). конструкция такая; rsyslog->kafka->КХ. Одна беда - с кафкой раньше не сталкивался. Прошу подсказать - в каком формате из rsyslog отправлять в kafka. Заранее благодарю. Если есть более оптимальные варианты - тоже хорошо. PS: rsyslog - то еще развлечение, пока лог распарсил - поседел...
Скорее всего как-то так: 1. поставить logstash (он могёт сам отслеживать rsyslog) 2. настроить logstash на передачу данных в kafka 3. движок кафка в КХ и матвьюха на таблицу Единственно не подскажу с форматом сообщения в кафке, там нужно смотреть в каком формате приходит от logstash. Там json, но какие поля, можно ли настроить - не знаю

Sultan
19.06.2018
08:59:47
Скорее всего как-то так: 1. поставить logstash (он могёт сам отслеживать rsyslog) 2. настроить logstash на передачу данных в kafka 3. движок кафка в КХ и матвьюха на таблицу Единственно не подскажу с форматом сообщения в кафке, там нужно смотреть в каком формате приходит от logstash. Там json, но какие поля, можно ли настроить - не знаю
Спасибо. От кафки в сторону КХ всё настроил по инструкции. теперь для rsyslog осталось собрать template и отдать его omkafka. на logstash/fluentd и прочих монстров франкенштейна смотреть не хочется. Если припрет, готов сам уже свой "велосипед" писать...

Дмитрий
19.06.2018
09:04:11
Добрый день, а можно как-то получить все значения из словарая?

Kirill
19.06.2018
09:04:54
Там все словари видны как таблицы

Дмитрий
19.06.2018
09:05:27
?
19.06.2018
09:19:59
вопрос по внутренней оптимизации. у меня есть большая мегатаблица из которой мне надо выбрать по ряду ограничений – например период времени/уникальность по полям/и т.д. я не хочу накладывать их одним условием, а хочу сделать каскад из VIEW, в каждом из которых будет какое-то значение фильтроваться. вопросы такие 1. есть ли разница в скорости выполнения итогового запроса через каскад – по сравнению с одним большим WHERE ... ? 2. будет ли КХ оптимизировать порядок выполнения этих VIEW каким-либо образом при итоговом запросе?

Google
?
19.06.2018
09:53:58
Приведите пример, всё зависит от деталей
ну грубо говоря логи посещений SELECT * FROM logs WHERE DateStamp> даты AND DateStamp<даты AND UniqFiled1 NOT IN (SELECT * ... FROM notUniqTable) AND UniqFiled2 IN ['a','b','b] AND etc.. вот каждая строчка условий будет CREATE VIEW Step1 AS SELECT * FROM logs WHERE DateStamp> даты AND DateStamp<даты CREATE VIEW Step2 AS SELECT * FROM Step1 WHERE UniqFiled1 NOT IN (SELECT * ... FROM notUniqTable) и т.д.

Tima
19.06.2018
09:58:24
Ответ на оба вопроса такой: всё зависит от того, будет ли запрос (один большой или несколько меньших) использоватье индекс (первичный ключ и клю партиционирования). Если будет - будет "быстро", иначе фуллскан (обычно он сильно медленее). Какой-то отдельной "оптимизации" заспроса, особено для VIEW в КХ нет

?
19.06.2018
10:00:27
то есть оптимизации одного большого WHERE тоже нет? что ж, это все упрощает

Victor
19.06.2018
10:03:46
может перенос в PREWHERE где-то поможет, это так, мысли джуна в КХ

Pavel
19.06.2018
10:15:05
А есть какие-то описанные или расказанные good practice как выбрать первичный ключ, гранулированность индекса, ключ партицирования и выражение для семплирования для движка MergeTree в зависимости от размера таблицьі, нагрузки и других условий?

Wolf
19.06.2018
10:18:13
ну большая часть описана в доке , можно по дефолту оставлять с этим проблем нет ну апервичный ключ вы сами подбираете под свои запросы, какие тут могут быть бест практис то

Дмитрий
19.06.2018
10:28:04
Еще 1 вопрос, я тут столкнулся с очень неожиданным поведением, у меня есть view SummingMergeTree, так вот запросы в нее дают абсолютно разные результаты. Причем часто одинаковые. что я делаю не так подскажите?

Значения не растут а прыгаю как бы туда сюда, причем очень значительно

Jen
19.06.2018
10:32:56
вы правильные функции в запросе используете?

Дмитрий
19.06.2018
10:33:30
вы правильные функции в запросе используете?
SELECT SUM(toInt64(requests)) AS sum_requests, toDate(toDateTime(event_date)) day FROM hits_view WHERE webmaster_id = 1422 GROUP BY day ORDER BY day desc

Вот запрос

Jen
19.06.2018
10:35:22
упс, перепутал с Aggregating движком

данные не вставляются за период запроса?

Дмитрий
19.06.2018
10:36:08
Нет

Да и прыгают вниз а не вверх

ну точнее туда обратно)))

Вот такая вьюха

CREATE MATERIALIZED VIEW hits_view ENGINE = SummingMergeTree( event_date, (webmaster_id,advertiser_id, campaign_id, stream_id, sub_stream_id,country_iso_code, device), 8192, (requests,plugs,bingos,impressions,pixels,clicks,cv1,cv1_price,cv1_expense,cv2,cv2_price,cv2_expense,debit,credit) ) POPULATE AS ( select event_date, webmaster_id,advertiser_id, campaign_id, stream_id, sub_stream_id, stream_type,country_iso_code, device, sum(requests) as requests, sum(plugs) as plugs, sum(bingos) as bingos, sum(impressions) as impressions, sum(pixels) as pixels, sum(clicks) as clicks, sum(cv1) as cv1, sum(cv1_price) as cv1_price, sum(cv1_expense) as cv1_expense, sum(cv2) as cv2, sum(cv2_price) as cv2_price, sum(cv2_expense) as cv2_expense, sum(debit) as debit, sum(credit) as credit from event GROUP BY event_date, webmaster_id,advertiser_id, campaign_id, stream_id, sub_stream_id, stream_type, country_iso_code,device )

Ничего не могу найти по данной проблеме(( Danila i need help! Пожалуйста)

Google
Константин
19.06.2018
10:53:23
народ, все воюю с репликацией

и не понятно, что происходит

место выедается с космической скоростью

bin файлов с нулевой длиной - нет

однако, в логах присутсвует, что-то странное: default.vast_tracking_local (ReplicatedMergeTreeQueue): Not executing log entry for part 20180401_20180430_200_850798_66 because its size (32.65 GiB) is greater than current maximum (4.23 MiB).

на зоокипере тоже место выедается с космиеской скоростью

Eugene
19.06.2018
10:59:29
Добрый день. Есть ReplacingMergeTree view шардированная. Каждый шард из кафки читает данные. При выполнении запросов с Final, данные с разных шардов не схлопываютя по первичному ключу. Это as designed или баг?

Stepan
19.06.2018
11:15:49
а можно дурацкий вопрос: count() Counts the number of rows. Accepts zero arguments and returns UInt64. The syntax COUNT(DISTINCT x) is not supported. The separate uniq aggregate function exists for this purpose. тем не менее такой синтаксис прекрасно работает и отдает значения, понятно что надо пользовать Uniq или uniqExact, но что все-таки значит не поддерживается?

LeiDruid
19.06.2018
11:31:16
Товарищи, а можно ли реплицировать MV, "наливая" её только с одного сервера?

Pavel
19.06.2018
12:29:10
Про ключ сэмплирования подробно написано здесь: https://github.com/yandex/clickhouse-presentations/tree/master/rit2018
Спасибо! В документации вроде есть много, но там как-то написано, как будь-то всем все очевидно, на самом деле не всем )

Vladimir
19.06.2018
12:31:06
Спасибо! В документации вроде есть много, но там как-то написано, как будь-то всем все очевидно, на самом деле не всем )
Советую склонировать весь репозиторий с презентациями, там много любопытного можно найти

Denis
19.06.2018
12:33:13
А есть какие-то описанные или расказанные good practice как выбрать первичный ключ, гранулированность индекса, ключ партицирования и выражение для семплирования для движка MergeTree в зависимости от размера таблицьі, нагрузки и других условий?
а вы какой парметр оптимизируете? Я например оптимизирую занимаемое место на диске и мне наплевать на скорость вставки и скорость выборок. В принципе рецепт простой, берете КХ, берете прод. данные, делаете эксперимент, потом еще, и через пару, тройку месяцев придет понимание.

Konstantin
19.06.2018
12:34:51
Коллеги, подскажите. Есть два кластера, данные одинаковые, кластеры на разных континентах. Так понимаю, сделать запросы через Distributed не получится. Вопрос в том, как сделать запрос в два кластера?

Vladimir
19.06.2018
13:04:36
Коллеги, у меня следующий вопрос. Нужно гарантировать порядок строк внутри групп после GROUP BY, чтобы результаты функций groupArray() былы детерминированы. Как этого проще всего добиться для такого запроса: SELECT -- во всех массивах нужно гарантировать правильный порядок по возрастанию timestamp groupArray(timestamp), groupArray(a), groupArray(b), groupArray(c), ... FROM table GROUP BY session_id Пока в голову приходит только ручная сортировка каждого столбца через arraySort((x, y) -> y, arr, timestamp). Но не хотелось бы выполнять это для каждого столбца.

Дмитрий
19.06.2018
13:11:36
полностью запрос и ошибка выглядят так: CREATE TABLE IF NOT EXISTS db_name.events_node ON CLUSTER stage ( uid String, pid UInt64, event Enum8('click' = 1, 'view' = 2), created_at DateTime, created_date Date ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/db_name/events_node', '{replica}', created_date, uid, (event, created_at, uid), 8192) Received exception from server (version 1.1.54380): Code: 159. DB::Exception: Received from staging........net:9000, 10.10.10.10. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000000 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 4 unfinished hosts (0 of them are currently active), they are going to execute the query in background. 0 rows in set. Elapsed: 181.108 sec. Если убрать ON CLUSTER stage то на текущей ноде таблица создается, макросы подставляются в путь.

Google
Alexander
19.06.2018
13:39:23
Подскажите, а есть ли возможность выполнить вставку в таблицу из файла в формате tsv через http клиент. Файл уже лежит на сервере. Примеры только через clickhouse client видел. Вообще как лучше организовать вставку больших объемов с удаленной машины из файла? Вставка по времени редкая, но большим объемом в несколько ГБ.

Вадим
19.06.2018
13:41:30
Подскажите пожалуйста, импортирую данные из CSV (stdin), получаю следующую ошибку Code: 49. DB::Exception: Unknown element '' for type Enum8('XXX' = 1, 'YYY' = 2) непонятно, к какой строке сообщение относится, можно как-то более подробное сообщение получить?

Tima
19.06.2018
13:46:12
Вадим
19.06.2018
13:48:16
cat /opt/.backup/test1.csv | clickhouse-client --stacktrace -d webstat --query="INSERT INTO test1 FORMAT CSV"

в логах вообще ничего: 2018.06.19 16:23:19.157187 [ 3 ] <Debug> executeQuery: (from [::1]:47114, query_id: 1bb712ea-a91e-426b-b45c-14b93ae74c16) INSERT INTO test1 FORMAT CSV 2018.06.19 16:23:19.182237 [ 3 ] <Debug> MemoryTracker: Peak memory usage (for query): 1.00 MiB. 2018.06.19 16:23:19.182275 [ 3 ] <Debug> MemoryTracker: Peak memory usage (total): 1.00 MiB. 2018.06.19 16:23:19.182303 [ 3 ] <Information> TCPHandler: Processed in 0.025 sec.

Aliaksandr
19.06.2018
13:58:06
Коллеги, подскажите. Есть два кластера, данные одинаковые, кластеры на разных континентах. Так понимаю, сделать запросы через Distributed не получится. Вопрос в том, как сделать запрос в два кластера?
Какой смысл делать запрос в два кластера с одинаковыми данными? Результат будет задвоенный. Но если очень хочется, можно создать в конфиге кликхауса отдельный кластер, в который входят все ноды из двух отдельнык кластеров, затем сделать Distributed таблицу на этом кластере, и отправлять запросы через нее

Коллеги, подскажите. Есть два кластера, данные одинаковые, кластеры на разных континентах. Так понимаю, сделать запросы через Distributed не получится. Вопрос в том, как сделать запрос в два кластера?
если же вы хотите сделать "репликацию для бедных", чтобы запросы шли на здоровый кластер, когда один из кластеров становится недоступным, то поставьте перед этими двумя кластерами chproxy - он будет равномерно распределять запросы между кластерами, а если один из них выйдет из строя, то направит все запросы на оставшийся здоровый

Александр
19.06.2018
14:16:23
А with не прокидывается в подзапросы? оО

Alex
19.06.2018
14:16:47
нет

А with не прокидывается в подзапросы? оО
но внутри подзапроса могут быть свои WITH

Александр
19.06.2018
14:17:11
Печально :( Спасибо!

Alex
19.06.2018
14:17:54
Печально :( Спасибо!
Да ладно, такие запросы пишут роботы для роботов. Copy-paste, и поехали :)

Александр
19.06.2018
14:18:39
Ну у меня аналитик попросил запрос написать с возможностью подменять идентификаторы всякие...а там несколько джоинов и вручную это править везде запарно. Думал, что with прокатит

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