
Vladimir
10.04.2017
21:41:37
или оно тоже не работает?

Pavel
10.04.2017
21:41:43
неа(

Vladimir
10.04.2017
21:42:00
а tcpdump что говорит во всех этих случаях?

Pavel
10.04.2017
21:44:49
тут еще сайд эффект

Google

Pavel
10.04.2017
21:45:00
что меня вышибает после этого с графаны, куда я зашел по http auth :/

Vladimir
10.04.2017
21:45:17
Ужас какой

Pavel
10.04.2017
21:49:46
Ситуация чутка прояснилась ""Code: 192, e.displayText() = DB::Exception: Unknown user admin, e.what() = DB::Exception""
нашел вот это в отладке хрома, то есть оно и правда пытается лезть в CH с реквизитами, которе я использую для входа в гарфану
заиметь бы флажок, чтобы отрубить такое поведение :)


Vladimir
10.04.2017
22:11:57
Такого быть не должно. Попробуйте сделать минимальный пример файла, на котором проявляется ошибка, и прислать нам.
В общем, такое дело. Оказалось, что в Nested альтером по ошибке были добавлены колонки не типа Array(String), а типа String. ClickHouse разрешил в Nested добавить колонки не типа Array(T) по какой-то причине... Но тут и человеческий фактор сыграл, конечно.
В итоге, скорее всего, кликхаус при парсинге JSON ожидал и пытался "считать" строку вида '"string1"', а получал '["string1", "string2", "string3"]' (без кавычки в начале), и выдавал ошибку о том, что не может в (типа) '"string1"' считать открывающую кавычку.
Тут меня скорее удивило даже не то, что КХ пропустил в Nested не-array, а то, что парсинг JSON не независимый, а завязан на структуру таблицы. Скорее всего, так оно и задумано; скорее всего, для каких-то целей эффективности. Но, если бы было иначе, то, скорее всего, в таких случаях выдавалась бы ошибка о "несовместимости типов String и Array(String) в колонке такой-то". Но, к сожалению, ошибка была не очень очевидная ("Code: 26, e.displayText() = DB::Exception: Cannot parse JSON string: expected opening quote: (at row 1), e.what() = DB::Exception") =(
К счастью, в итоге разобрался и всё работает чудесно =)
Вот такие дела. Могу завести багу на гитхабе, в принципе, но даже не знаю о чём тут...
В принципе, о том, что КХ позволяет заальтерить Nested не-массивными типами, что ли. Ну или, возможно, о более ясных текстах ошибок при парсинге JSON, но это не так просто будет пофиксить, как мне кажется.


papa
10.04.2017
22:29:02
Nested - это лексическое соглашение, по которому столбцы с точкой в имени и одинаковым префиксом считаются массивами одинаковой длины когда вы делаете array join nestedname, но это допущение не проверяется при записи строк и создании колонок.

Vladimir
10.04.2017
22:37:09
Да, к сожалению, не проверяется

Alex
10.04.2017
22:40:24
Думаю что всё-таки надо проверять, потому что таблицей после такого альтера пользоваться невозможно. Создавайте issue.

Vladimir
10.04.2017
23:21:20

Roman
11.04.2017
05:21:17
заиметь бы флажок, чтобы отрубить такое поведение :)
Это поведение не графаны, а самого КХ
описано в https://clickhouse.yandex/reference_ru.html#HTTP интерфейс
Считаю, что это весьма правильное решение. В противном случае, необходимо было бы указывать логин/пароль отдельно для basic auth и для самого КХ
В нашем случае для доступа из графаны в КХ всегда должен использоваться пользователь с ограниченными правами и квотами. Поэтому и basic auth и КХ настроены на работу с ним

Google

Pavel
11.04.2017
06:50:04
Возможно, это удобно в каком-то кейсе. Но CH без проблем дает указывать логин и пароль в строке запроса вместо http auth. Вот именно этого и хочется.
Создавать юзеров в CH не шибко удобно. Но если бы он мог читать стандартный файл паролей в формате apache/nginx и создавать юзеров с него - это решило бы проблему.

Vladimir
11.04.2017
07:07:45
Или ldap :)

Pavel
11.04.2017
07:08:19
боже упаси

Vladimir
11.04.2017
07:16:36

Roman
11.04.2017
07:21:37

Виктор
11.04.2017
07:23:37
Но отсутствие проверки на одинаковую длину это фейл, надо делать.

Pavel
11.04.2017
07:28:22
Спасибо!) Очень благодарен за внимание к проблеме!)
Сейчас попробуем закостылить :)

Dig
11.04.2017
07:37:06
День добрый всем. Как при вставке из формата JSONEachRow заставить работать DEFAULT значения?
CREATE TABLE test (
date Date,
isp String,
id Int64 DEFAULT 10,
ispHash Int64 DEFAULT cityHash64(isp)
)
ENGINE = MergeTree(date, (date), 8192)
insert into test FORMAT JSONEachRow
{"date":"2017-02-02","isp":"Gmail"}
в моем случае поля id и ispHash - имеют нулевые значения после инсерта. Если делать через Values, то отрабатывает правильно, но нужен формат JSONEachRow.

Владимир
11.04.2017
08:25:15
А если вместо DEFAULT создать MATERIALIZED поля?

Dig
11.04.2017
08:31:52

Andrey
11.04.2017
08:41:57
Добрый день. А есть возможность настроить кликхаус на работу с директорией отличной от /opt/clickhouse? Или только через симлинк?

Pavel
11.04.2017
08:42:54
создал юзера с CH с тем же паролем, что у меня был на http auth в графане, вышло "Data source is working" :)

Igor
11.04.2017
08:43:17

Pavel
11.04.2017
08:43:41
ога

Igor
11.04.2017
08:43:42
<!-- Path to data directory, with trailing slash. -->
<path>/usr/local/var/lib/clickhouse/</path>
это в config.xml, если что

Andrey
11.04.2017
08:45:10

Igor
11.04.2017
08:45:31
там еще <tmp_path> есть

Google

Pavel
11.04.2017
09:02:45
а есть у кого пример запроса для PieChart созданный вручную через ввод SQL в CH?

Roman
11.04.2017
09:09:50
Вы можете использовать макрос $columns из плагина для графаны
в плагине это будет выглядеть примерно так
$columns(
Client c,
sum(Requests) Requests)
FROM $table

Pavel
11.04.2017
09:11:25
О, спасибо! Попробую))

Roman
11.04.2017
09:12:23
или без макроса -
SELECT
t,
groupArray((c, Requests)) AS groupArr
FROM
(
SELECT
(intDiv(toUInt32(DateTime), 3600) * 3600) * 1000 AS t,
Client AS c,
sum(Requests) AS Requests
FROM stats
GROUP BY
t,
c
ORDER BY
t ASC
)
GROUP BY t
ORDER BY t ASC

Pavel
11.04.2017
09:13:27
Круть, спасибо!)

Mr
11.04.2017
10:15:43
добрый день
господа, подскажите пожалуйста, что-то серьезное менялось в кх за последнее время? он у нас крутится в докере, пытался сегодня обновить, он валится, пришлось откатить
# docker images |grep clickhouse
yandex/clickhouse-server latest c8068646a915 12 days ago 796 MB
yandex/clickhouse-server <none> 5ae091f607a9 2 months ago 883 MB

Fike
11.04.2017
10:17:29
приложите, пожалуйста, ошибку,"валится" - слишком широкое сообщение

Mr
11.04.2017
10:17:43
сейчас, не успеваю :)
clickhouse_1 | 2017.04.11 10:13:32.648312 [ 4 ] <Trace> HTTPHandler-factory: HTTP Request for HTTPHandler-factory. Method: POST, Address: [::ffff:10.0.111.1]:55926, User-Agent: python-requests/2.11.1
clickhouse_1 | 2017.04.11 10:13:32.648329 [ 4 ] <Trace> HTTPHandler: Request URI: /
clickhouse_1 | 2017.04.11 10:13:33.131553 [ 4 ] <Debug> executeQuery: (from [::ffff:10.0.11.1]:55926) INSERT INTO h.alive FORMAT TabSeparated
clickhouse_1 | 2017.04.11 10:13:33.131640 [ 4 ] <Debug> MemoryTracker: Peak memory usage (total): 0.00 B.
clickhouse_1 | 2017.04.11 10:13:33.141496 [ 4 ] <Error> HTTPHandler: Code: 60, e.displayText() = DB::Exception: Table h.alive doesn't exist., e.what()
= DB::Exception, Stack trace:
валится вот так и дальше стектрейс

Igor
11.04.2017
10:18:19
/opt/clickhouse -> /var/lib/clickhouse?

Mr
11.04.2017
10:18:43
ага, путь изменился?
спасибо, сейчас рестартну
спасибо

Дмитрий
11.04.2017
11:07:48
Ребят подскажите ваше мнение чем лучше наполять clickhouse через HTTP интерфейс на ежедневной основе из различных источников (MSSQL/ORACLE/DB2) пока думаем в сторону pentaho data integration
Необходимо перекидывать новые данные появившиеся в таблицах с момента прошлой загрузки
Есть ограничения на стороне источников есть только учетка в базу данных с возможностью чтения

Google

⚓D
11.04.2017
11:15:53
есть способ переключить инстанс кликхауса на работу с другой нодой зукипера, кроме как сделать эту ноду зукипера недоступной?

Andrey
11.04.2017
11:17:26
Ребят подскажите ваше мнение чем лучше наполять clickhouse через HTTP интерфейс на ежедневной основе из различных источников (MSSQL/ORACLE/DB2) пока думаем в сторону pentaho data integration
Насколько я понимаю, pentaho DI раньше назывался pentaho Kettle. Шупал его года два-три назад. Вещь в себе, притом трудно поддерживаемая. Мэппинги сложно отлаживать, есть архитектурные косяки (не помню точно, какие, но помню, что долго придумывал как их обходить). Визуальная среда проектирования на базе эклипс ?, плюс вообще, визуальные языки сложно поддерживать: ты видишь диаграмму верхнего уровня, но задолбаешься протыкивать мышкой каждый шаг, чтоб понять, что он делает.
В варианте с ETL, написанном на обычном ЯП с поддержкой функционального программирования, получается гораздо более управляемая система.


Дмитрий
11.04.2017
11:21:49
Андрей спасибо!

Alexey
11.04.2017
11:22:16
если нужна поточность и какая-то near real-time-овость, то можно глянуть в сторону Flink, Storm и еще что-то не давно в Apache свалилось интересное
там та же функциональщина, и бигдата + всякая обвязка для кластеризации

Дмитрий
11.04.2017
11:23:17
Алексей спасибо! Ваш вариант тоже изучим

Vladimir
11.04.2017
11:30:06
Добрый день! Подскажите, пожалуйста, а есть ли всё-таки возможность как-то посчитать min/max в таблицах типа CollapsingMergeTree? Может быть, как-то подзапросами?

Vladislav
11.04.2017
11:42:39
И да, все open-source/community инструменты по ETL отвратительные в плане совместной работы

Andrey
11.04.2017
12:01:06
@milovidov_an Алексей, вы упоминали на митапе, что в Яндексе кто-то поднял кластер КХ на ZFS on Linux. Есть ли в чате кто-то кто может описать впечатления о стабильности ZFS on Linux и пригодности к использованию в продакшене?

Дмитрий
11.04.2017
12:28:48

Vladislav
11.04.2017
12:38:17

Alexey
11.04.2017
12:57:04
хотя, с дубликатами может и CH справиться...

Абрамов
11.04.2017
13:27:05
а кто как, кстати, с дубликатами борется? :)
если не считать optimize

Pavel
11.04.2017
13:58:03
опять не выходит камменый цветок с PieChart в графане :(
пытаюсь отрисовать вот такое SELECT srcAsn AS asn, sum(length) AS total_traffic FROM traffic_buffer GROUP BY asn ORDER BY total_traffic DESC LIMIT 10

Google

Pavel
11.04.2017
14:02:53
"ORDER BY time supported at this time" и возникает вопрос, а как ограничить число элементов на диаграмме только топ10, а-то у меня браузер виснет от тысяч =(

Roman
11.04.2017
14:20:00

Pavel
11.04.2017
14:20:29
спасибо!)

Roman
11.04.2017
14:20:46
$columns(
Client c,
sum(Reqs) Reqs)
FROM $table
WHERE Client in (
SELECT Client
FROM
(
SELECT
Client,
sum(Reqs) Reqs
FROM $table
GROUP BY Client
ORDER BY Reqs DESC
LIMIT 20
))

Pavel
11.04.2017
14:33:26
ммм, я наверное не до конца понимаю логику
я могу задать table в конструкторе
но когда я ввожу запрос в поле QUERY, его стирает и переделывает, если я меняю что-либо из параметров
в то же время если я делаю toggle mode, у меня вообще все опции выключаются и становится не ясно, как указать ту же table

Roman
11.04.2017
14:35:33
я не уверен, что вы используете последнюю версию плагина. В любом случае, вы можете указать вместо $table просто имя таблицы

papa
11.04.2017
14:36:12

Pavel
11.04.2017
14:36:34
я стянул его с гарфана нет, лучше с гита тянуть?

Roman
11.04.2017
14:37:18
да, на графана.нет не самая новая версия

Alexey
11.04.2017
15:21:59

Pavel Novitskiy
11.04.2017
15:24:27
Если есть какие-то более конкретные вопросы, то можно их задать мне.

Andrey
11.04.2017
15:26:59
@milovidov_an @presto53 Спасибо.