@clickhouse_ru

Страница 70 из 723
Dima
16.02.2017
12:38:57
у нас только реплика

Dmitry
16.02.2017
13:10:44
Если только реплика - всё ок

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

Указывается вот так <replica> <host>HOST</host> <port>9000</port> <user>user</user> <password>passwd</password> </replica>

Google
Dima
16.02.2017
13:12:43
спасибо!

Alexey
16.02.2017
13:17:30
Следующий митап в Санкт-Петербурге, 28 февраля: https://events.yandex.ru/events/meetings/28-february-2017/ Ещё есть возможность зарегистрироваться.

Alexey
16.02.2017
13:20:56
Ещё не начали присылать. Наверное, на следующей неделе.

Alexander
16.02.2017
13:47:06
А как в словаре корректно описать, чтобы null value могло быть null?

Vitaliy
16.02.2017
14:18:42
их там 2-е, какой именно ?
вот этот https://github.com/roistat/go-clickhouse

Kirill
16.02.2017
14:29:49
вроде бы был, если вы про https://github.com/roistat/go-clickhouse/issues/14, то да, драйвер работает поверх http и такая возможность должна быть echo "(IPv4StringToNum('192.0.2.1'))" | POST 'http://localhost:8123/?query=INSERT INTO stats.tt VALUES' :) select * from tt; SELECT * FROM tt ┌─────────ip─┐ │ 3221225985 │ └────────────┘

Igor
16.02.2017
14:59:51
> @milovidov_an Алексей, добрый день! Мы обновили CH до версии: 1.1.54140. Перестали загружаться встроенные гео-словари со следующей ошибкой: <Error> EmbeddedDictionaries: Cannot load dictionary! You must resolve this manually.: Code: 0, e.displayText() = DB::Exception: Region id is too large: 1000006, should be not more than 1000000 Судя по коду: https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/Embedded/RegionsHierarchy.cpp#L41 https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/Embedded/RegionsNames.cpp#L59 это ограничение: const size_t max_size = 1000000; Но наши словари опираются на базу geonames.org, на которую, в т.ч., опирается поставщик данных MaxMind, где максимальный geoname_id (в терминах CH - это region_id), который используется нами - это 11073439. Появилось это в этом коммите https://github.com/yandex/ClickHouse/commit/f9eb536825ae3cfab65b1d8d37a2bdd67c58010d С чем связанно такое ограничение max_size ? Можно ли предложить PR по увеличению этого лимита до 20 млн ?

Vladimir
16.02.2017
15:26:36
> @milovidov_an Алексей, добрый день! Мы обновили CH до версии: 1.1.54140. Перестали загружаться встроенные гео-словари со следующей ошибкой: <Error> EmbeddedDictionaries: Cannot load dictionary! You must resolve this manually.: Code: 0, e.displayText() = DB::Exception: Region id is too large: 1000006, should be not more than 1000000 Судя по коду: https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/Embedded/RegionsHierarchy.cpp#L41 https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/Embedded/RegionsNames.cpp#L59 это ограничение: const size_t max_size = 1000000; Но наши словари опираются на базу geonames.org, на которую, в т.ч., опирается поставщик данных MaxMind, где максимальный geoname_id (в терминах CH - это region_id), который используется нами - это 11073439. Появилось это в этом коммите https://github.com/yandex/ClickHouse/commit/f9eb536825ae3cfab65b1d8d37a2bdd67c58010d С чем связанно такое ограничение max_size ? Можно ли предложить PR по увеличению этого лимита до 20 млн ?
Действительно. Выглядит как надуманное ограничение. Такое ощущение, что предполагалось, что вся геобаза будет лежать в виде недо-хэштаблицы (т.е. попросту массива размером миллион), где комфортно расположились бы все айдишники по порядку, почти без пропусков, видимо из какой-то внутренней яндексовской геобазы. Я нашёл вариант, как это "закостылить" и прикрутить сюда базу максмайнд: перенумеровать айдишники максмайнд и создать кастомный внешний словарь с отображением из одних id в другие (+скрипт для регулярного обновления получившегося дикта). Только так появляется возможность использовать встроенные в КХ геофункции. Разумеется, остаётся ещё вариант использовать собственные внешние словари, а не геофункции КХ. Но, конечно, я не оставляю надежды, что разработчики кх исправят этот недочет, и добавят возможность использовать обычные хэш-таблицы для хранения геобазы.

Alexey
16.02.2017
15:32:51
Но с такими id оно не оптимально - много оперативки впустую. Конечно лучше было бы сделать так, чтобы для больших id-ов конвертировалось в хэш таблицу.

Google
Vladimir
16.02.2017
15:37:16
А известно ли, насколько сильно выше накладные расходы от использования простейшей хэш-таблицы с целыми числами и делением с остатком, по сравнению с таким, вот, массивом, выраженное в скорости выполнения запроса или латенси?

Ну так, субъективно что-то вообще поменяется принципиально?

Даже без хэшей будет хэш-таблица, просто остаток от деления и последовательный поиск при разрешении коллизий

Igor
16.02.2017
16:01:56
> @milovidov_an Если до этого всё работало нормально, то давай PR, и просто увеличим. Мы проблем не заметили на предыдущих версиях CH, но у нас всегда был словарь MaxMind и возможно оно быстрее и лучше работало используя мы дополнительное хеширования, предложу PR с 20М т.к. мне кажется - это уже проблема "пользователя" что он хочет загрузить 20М записей в словарь )) Еще доп. вопрос : Как отреагирует CH на __понижение__ версии сервера? Пробовали в Yandex в продакшене даунгрейд ? Или это сильно индивидуально, зависит от правок которые вносились в код между версиями. Мы думали как оперативно поправить проблему с этим geo, и варианта только два : даунгрейд или пересобрать из исходников deb. До этого мы использовали ваш репозиторий. Понижать стало страшно, вдруг данные потеряются )

Alexey
16.02.2017
16:58:22
А известно ли, насколько сильно выше накладные расходы от использования простейшей хэш-таблицы с целыми числами и делением с остатком, по сравнению с таким, вот, массивом, выраженное в скорости выполнения запроса или латенси?
Да, я это проверял, когда делал специализации для 8 и 16 битных ключей для GROUP BY. Числа не помню, но можно проверить заново. Стоит заметить, что когда id-ы сильно разреженные и их много, то плоский массив, наоборот, будет работать хуже хэш-таблицы.

Алина
16.02.2017
17:00:26
Добрый вечер. Если у нас есть таблица, созданная CREATE TABLE test( Year UInt16, Name String ) ENGINE =...; то как сделать запрос INSERT INTO test FORMAT JSONEachRow { "Year": [1, 10], "Name":["a", "b"] }

Aleksandr
16.02.2017
17:02:08
Повторю вопрос :) Может в оживленной дискуссии не заметили: Было бы круто увидеть CH vs Kudu (https://kudu.apache.org/). Делал кто-нибудь интересно?

Alexey
16.02.2017
17:04:00
> @milovidov_an Если до этого всё работало нормально, то давай PR, и просто увеличим. Мы проблем не заметили на предыдущих версиях CH, но у нас всегда был словарь MaxMind и возможно оно быстрее и лучше работало используя мы дополнительное хеширования, предложу PR с 20М т.к. мне кажется - это уже проблема "пользователя" что он хочет загрузить 20М записей в словарь )) Еще доп. вопрос : Как отреагирует CH на __понижение__ версии сервера? Пробовали в Yandex в продакшене даунгрейд ? Или это сильно индивидуально, зависит от правок которые вносились в код между версиями. Мы думали как оперативно поправить проблему с этим geo, и варианта только два : даунгрейд или пересобрать из исходников deb. До этого мы использовали ваш репозиторий. Понижать стало страшно, вдруг данные потеряются )
Понижение версии зачастую работает нормально - мы изредка так делаем, когда у админов возникают подозрения, что с релизом не всё хорошо. Иногда всё-таки бьвают исключения. Например, если в новой версии изменилось имя пользователя metrika -> clickhouse, то при откате потребуются ручные действия.

Алина
16.02.2017
17:06:23
А как?

Vladimir
16.02.2017
17:08:08
а какой у вас язык? можно ещё утилитой POST, wget, curl

на Питоне хорошо себя показал по скорости pycurl, несколько медленнее, но чуть удобнее requests, можно использовать ещё orm для clickhouse, созданную поверх requests, насколько я знаю https://github.com/Infinidat/infi.clickhouse_orm

Добрый вечер. Если у нас есть таблица, созданная CREATE TABLE test( Year UInt16, Name String ) ENGINE =...; то как сделать запрос INSERT INTO test FORMAT JSONEachRow { "Year": [1, 10], "Name":["a", "b"] }
К слову, у вас такой запрос не прокатит, ведь Year и Name — не массивы. Нужно передать в теле пост-запроса 2 отдельные строчки, одну {"Year": 1, "Name": "a"}, а другую аналогично, но для 10 и "b"

Алина
16.02.2017
17:24:01
К слову, у вас такой запрос не прокатит, ведь Year и Name — не массивы. Нужно передать в теле пост-запроса 2 отдельные строчки, одну {"Year": 1, "Name": "a"}, а другую аналогично, но для 10 и "b"
Но вот так работает CREATE TABLE ontime ( s String, nest Nested( x UInt8, y UInt32), FlightDate Date ) ENGINE = MergeTree(FlightDate, (s, FlightDate), 8192); INSERT INTO ontime VALUES ('Hello', [1,2], [10,20], 34657), ('World', [3,4,5], [30,40,50],346572), ('Goodbye', [], [],3465736)

Vladimir
16.02.2017
17:25:07
Ага

Алина
16.02.2017
17:26:10
Ага
А в json никак?

Vladimir
16.02.2017
17:26:31
Можно

Alexey
16.02.2017
18:18:43
Google
Vladimir
16.02.2017
18:27:05
Какой классический?

А, не

Нужно его расплющить сперва

Mikhail
16.02.2017
18:27:18
без полей вида nest.x

Vladimir
16.02.2017
18:27:27
Из nested-вида сделать flat такой

Mikhail
16.02.2017
18:27:57
жаль

мы рассматривали вариант размаппить объект в json и сразу записать

Vladimir
16.02.2017
18:28:27
Ну так оно и внутри хранится, наверное поэтому выбран такой вид

Mikhail
16.02.2017
18:28:46
Vladimir
16.02.2017
18:28:48
мы рассматривали вариант размаппить объект в json и сразу записать
Ну всё решается маленькой утилитарной функцией, которая расплющивает джсон

Alexey
17.02.2017
01:12:23
еще одну звезду на гитхабе до 2к!

Maksim
17.02.2017
03:14:53
пожалуйста... еще одна одна звезда - 2k

Aleksey
17.02.2017
07:21:33
Повторю вопрос :) Может в оживленной дискуссии не заметили: Было бы круто увидеть CH vs Kudu (https://kudu.apache.org/). Делал кто-нибудь интересно?
Добрый день! мы планируем сделать в ближайший месяц... только не в чистом виде kudu а impala + kudu

Коллеги вопрос а не предполагается ли выложить опенсорс софт для управлением кластером ....

Dmitry
17.02.2017
07:58:44
У нас к сожалению нет такого софта, который можно было бы выложить.

Есть разный набор скриптов в нескольких частях компании

Если основная боль - это применение ддл, то это есть в планах



Konstantin
17.02.2017
09:42:12
Коллеги, в чем может быть проблема? DB::Exception: Unknown function decodeURLComponent

Google
Igor
17.02.2017
09:43:15
в том, что у вас старая версия сервера?)

Konstantin
17.02.2017
09:43:47
есть такое предположение)

Igor
17.02.2017
09:43:53
документация отражает текущее состояние мастер-ветки. соотв. может быть впереди стабильных билдов

Konstantin
17.02.2017
09:43:54
а когда функция появилась?)

Igor
17.02.2017
10:29:50
> Aleksey Коллеги вопрос а не предполагается ли выложить опенсорс софт для управлением кластером .... На сколько мне известно, в открытом доступе только моя попытка сделать миграции в кластее, https://habrahabr.ru/company/smi2/blog/317682/

> Konstantin а когда функция появилась?) Можно проверить через select * from system.functions where name like '%deco%'

Igor
17.02.2017
10:35:51
а "когда появилась" можно узнать на гитхабе https://github.com/yandex/ClickHouse/search?utf8=%E2%9C%93&q=decodeurlcomponent ~15-30 декабря. подробнее - с помощью git blame )

Konstantin
17.02.2017
11:03:52
спасибо))

Алексей
17.02.2017
11:16:02
Коллеги подскажите, пожалуйста, в какой файл и в какое место прописать сервера zookeeper? из документации мне не очевидно :( <zookeeper-servers> ...</zookeeper-servers>

Igor
17.02.2017
11:17:56
https://clickhouse.yandex/reference_ru.html#ReplicatedSummingMergeTree

Алексей
17.02.2017
11:21:36
Спасибо:) Там вроде zookeeper-servers было, а сейчас просто zookeeper. Странно, видимо уработался

Maksim
17.02.2017
12:09:12
можете посоветовать насчёт timeSlot

хочу вывести квадратики разных цветов, heatmap: когда была максимальная посещаемость

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

(toUnixTimestamp(intDiv(toUInt32(created_at), 86400) * 86400)) as date

Dmitry
17.02.2017
12:12:31
можно просто toDate(created_at)

Maksim
17.02.2017
12:14:24
как можно догадаться, хитрость в том, что гранулярность прийдется сделать гибкую

вместо 86400 может что-то другое быть, например час

вопрос про timeSlot — это прям прибито гвоздями 30 минут?

Igor
17.02.2017
12:15:08
toHour же тоже есть, и toStartOf(Five)Minute

Google
Igor
17.02.2017
12:15:25
конечно все еще не так гибко

Maksim
17.02.2017
12:15:36
окей, вопрос тогда такой: имеет ли смысл пользоваться этими не очень гибкими функциями?

т.е. вдруг они дадут какой-то перфоманс, как было с переходом с регекспа на UUID функции

Igor
17.02.2017
12:16:13
вообще да, было бы логично и клево

Slava
17.02.2017
13:10:53
здравствуйте, подскажите пожалуйста(возможно оффтоп): использую go кдиент для вставки данных в CH, если делаю вставку батчами по 1000 то все ок, а если увеличиваю размер батча до 5к,10к, то получаю ошибку clickhouse error: [27] DB::Exception: Cannot parse input: expected , before..., причем если вставить эту row(на которой случилась ошибка) отдельн то все ок. Это ведь всего в go клиенте? Данные для вставки всегд одинаковые

Kirill
17.02.2017
13:21:03
да, похоже на баг в клиенте

Slach
17.02.2017
13:35:35
клиент какой?? roistat ??

Kirill
17.02.2017
13:37:26
судя по ошибке - да

Slava
17.02.2017
13:40:25
Да, просите, забыл клиент указать(ошибочно думал что он один) roistat/go-clickhouse

Slach
17.02.2017
13:56:32
попробуйте написать issue в их github

Alexander
17.02.2017
14:10:45
Селект дня select count(*), count(distinct application_key) from dw.dim_application final format Vertical; count(): 29295092 uniq(application_key): 29304655 И конечно, понятно почему так, но в исходном синтаксисе выглядит прикольно

nikoinlove
17.02.2017
14:12:27
а если позапускать - цифры меняются?)

Alexander
17.02.2017
14:13:26
нет, uniq детерминированный

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