@clickhouse_ru

Страница 266 из 723
Navern
20.09.2017
12:35:20
и когда я пишу dsn=ClickHouse он лезет за соовтетствующим драйвером

который описан в .odbc.ini

для постгреса

в общем заработало, спасибо. Я скомпилил одбц драйвер яндекса, добавил так как у вас указано и получается делать запросы.

Google
Navern
20.09.2017
12:36:03
ща покажу как выглядит

odbc_fdw тоже пришлось подправить под постгрес 9.6

Павел Максимов
20.09.2017
13:13:47




Oleh
20.09.2017
13:15:07
слишком много \, пишет что ему нужен символ ' перед датой

Tima
20.09.2017
13:15:16
Тут http://joxi.ru/Q2KGdVKi93D6y2 не должно быть двух слешей

Павел Максимов
20.09.2017
13:17:32


Tima
20.09.2017
13:19:21
У вас в исходных данных похоже что такое экранирование. Т.е. выход - переделать их

Павел Максимов
20.09.2017
13:20:49
такие данные я из logs api яндекса выгружаю. Всем спасибо большое. буду искать решение

Tima
20.09.2017
13:26:53
Попробуйте на данные не питоном посмотреть, может ваш notebook добавляет слеши

Nikita
20.09.2017
13:53:35
Вопрос вроде поднимался, но явсного ответа не нашел. Кому нибудь удавалось из Python по HTTPS отправлять запрос на удаленный сервер CH ? Или возможно даже заставить работать какую нибудь ORM (infi, sqlalchemy) по этому протоколу? На сколькопонял на моей машиневсе упирается в паеты OpenSSL. Не из под убунты 16.04 не из под Win10 настроить коннект не удалось, пишет ошибку: requests.exceptions.ProxyError: HTTPSConnectionPool(host='xxx.xxx.xxx.xxx', port=9003): Max retries exceeded with url: /?query_id=bf184334-9e0a-11e7-bab7-74d435b3245e&database=default (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden',))) Хотя через curl, как описано в доке, спокойно ходит.

Vladimir
20.09.2017
14:38:41
Коллеги, добрый день, Нашёл незадокументированную фичу Yandex Metrika Logs API - можно скачивать архивы файлов, а значит экономить много времени и трафика. Для этого необходимо в хедер запроса на выдачу части логов добавить Accept-Encoding:gzip Пользуйтесь)

Google
Igor
20.09.2017
14:55:56
Можно даже сразу этот gz отправить на вход ch )

Александр
20.09.2017
15:24:04
Я думаю, что не зря недокумментированная фича )

Все таки упаковать все это дело не дешево для проца

Stas
20.09.2017
15:27:16
пытаюсь сделать: ALTER TABLE test_array MODIFY COLUMN r Nullable(Array(Int64)); и получаю DB::Exception: Cannot parse input: expected [ before: 2826. изначально r - nullable(string)

papa
20.09.2017
15:33:21
видимо ожидается что строка имеет вид [1,2,3]

Stas
20.09.2017
15:35:04
видимо ожидается что строка имеет вид [1,2,3]
именно со скобками? я думал он по умолчанию стандартный делиметр подхватит (запятую)

papa
20.09.2017
15:35:42
toString() от массива возвращает строку в этом формате, обратный разбор ожидает ее же.

Stas
20.09.2017
15:37:50
что то int он мне array не переводит а если в string лежат просто голые значения я ожадаю что бы он мне их сделал все новыми массивами - тоже не хочет

то, что int в array не может грустно конечно =(

Андрей Михайлович
20.09.2017
15:40:39
@SomeoneBehindYou , классная аватарка

s3rj1k
20.09.2017
20:45:14
всем привет, а подскажите можно ли как то скормить json в http api и как правильно это сделать?

Tima
20.09.2017
21:19:08
s3rj1k
20.09.2017
21:20:50
Прочитать документацию, особено с использованиеи поиска
там не понятен момент с указанием инпут сорса тайпа, можно как то сказать к примеру в конфиги, что все данные в эту таблицу всегда будут приходить в виде json через http api?

s3rj1k
20.09.2017
21:22:30
Нет,так нельзя. Только передавать FORMAT на каждый запрос
жаль, было бы здорово если такой функционал появится

Tima
20.09.2017
21:50:00
Напишите прокси, например на nodejs, который будет так делать

s3rj1k
20.09.2017
21:53:20
смысл в том что бы не писать прокси)

Konstantin
21.09.2017
05:30:09
подскажите, есть таблица у которой неправильно заполнили поле DATE, переписываю ее в другую таблицу где поле DATE является вычисляемым, есть способы сделать это быстро? сейчас скриптом делается SELECT посуточно и INSERT. на обработку 4 месяцев ушло>20 часов =(

Павел Максимов
21.09.2017
05:49:18
У вас в исходных данных похоже что такое экранирование. Т.е. выход - переделать их
в исходных данных экранирование нормальное \' , но при добавление файла через консоль или при чтение через python, это превращается в \\' подскажите в чем может быть причина?

Google
Konstantin
21.09.2017
06:54:27
глупый вопрос: если я знаю количество строк которое должно быть вставлено в таблицу и по SHOW PROCESSLIST вижу, что это количество записано, а до окончания запроса еще 86% можно ли прервать выполнение запроса? =)

Tima
21.09.2017
07:01:48
разобрался
Поделитесь решением

Павел Максимов
21.09.2017
07:02:13
Поделитесь решением
replace все решил))

Vladislav
21.09.2017
08:09:50
Всем привет) Ни у кого не возникает такого, при скане таблицы: Exception on client: Code: 32. DB::Exception: Attempt to read after eof: Code: 210. DB::NetException: Connection refused:

С чем это может быть связано? ALB или всё же CH тоже может такое отдавать.

Cleverfox
21.09.2017
08:35:01
Поделитесь решением
Очевидно он экранировал символы, а там все 8bit safe и экранировать их было не нужно.

Vladimir
21.09.2017
08:47:16
Коллеги, добрый день, подскажите, пожалуйста, есть ли возможность оптимизации запроса. SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17' обрабатывает только небольшую часть таблицы SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17' AND domain(url) = 'domain.com' обрабатывает всю таблицу с начала до конца Поведение выглядит странным, можно как-то подсказать кликхаусу, что всю таблицу обрабатывать не нужно?

Vladimir
21.09.2017
08:49:15


Индексов нет, тип таблицы -Log

Andrew
21.09.2017
09:17:20
Индексов нет, тип таблицы -Log
Попробуйте движок MergeTree, в движке Log всегда читаются все данные. https://clickhouse.yandex/docs/ru/single/#mergetree Положите дату-счетчик в первичный индекс, client_id хорошо подойдет для семплирования (возьмите intHash32),

Vladimir
21.09.2017
09:17:54
Да, уже прочитал про него, сделал вот так MergeTree(date, watch_id, watch_id, 8192) жду когда перельются данные

Да, перестал проходиться по всей таблице, спасибо!

Andrew
21.09.2017
09:21:45
Да, уже прочитал про него, сделал вот так MergeTree(date, watch_id, watch_id, 8192) жду когда перельются данные
с моей колокольни лучше будет работать MergeTree(date, intHash32(watch_id), (date, counter_id, intHash32(watch_id)), 8192) в вашей конфигурации он всё равно будет ходить по всей таблице, потому что вы не делаете фильтр по watch_id

Vladimir
21.09.2017
09:24:56
У меня только 1 counter_id, так что решил его не включать, дата, на сколько я понял по документации, тоже всегда в индексе. А зачем нужен intHash32 - я не понял



И судя по моим экспериментам оно так и работает

Andrew
21.09.2017
09:28:35
intHash32 нужен чтобы быть уверенным в равномерном распределении ключей: вдруг idшники будут неслучайными по какой-то причине, или, например, последовательными? Про дату пусть лучше подскажут знающие, в доке везде советуют дублировать и в дате, и в индексе: но, вероятно, вы правы

Vladimir
21.09.2017
09:30:17
на сколько я понимаю watch_id последователен, тогда, видимо, хэширование для сэмплирования оправдано, но хачем хэшировать в индексе пока не понятно..

Ilyas
21.09.2017
09:30:58
по идее если даты нет в индексе, то при запросах с условием по дате будет фулскан "кусочков", а если дата в индексе есть, то фулскана быть не должно

Google
Vladimir
21.09.2017
09:42:01
Вот смотрите, у меня таблица 100 строк с данными с августа select count() from hits_new обработал 100 строк select count() from hits_new where date > '2017-09-10' обработал 30 строк select count() from hits_new where date > '2017-09-10' and domain(url) = 'bla-bla.ru' обработал 30 строк

При том, что engine=MergeTree(date, watch_id, watch_id, 8192)

Так что видимо независимо от наличия даты в индексе он индексирует таблицу по дате..

Tima
21.09.2017
09:43:49
Так что видимо независимо от наличия даты в индексе он индексирует таблицу по дате..
Не индексирует, а партицирует https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D1%86%D0%B8%D1%8F#id5

Поэтому если есть условие на ключ партиции - читается меньше данных

Vladimir
21.09.2017
09:46:01
Спасибо за поправку! А даст ли что-то добавлние даты в индекс?

Ilyas
21.09.2017
09:46:50
Попробуйте запрос чтоб он больше месяца затрагивал и прочитайте в интернетах что такое партицирование :)

Konstantin
21.09.2017
09:48:12
подскажите а когда в MergeTree делаешь запрос с условием например date='2017-09-21', он всегда пробегается по всей партиции за сентябрь?

Tima
21.09.2017
09:48:39
Спасибо за поправку! А даст ли что-то добавлние даты в индекс?
Зависит от типов запросов. Всё основное в документации описано

Konstantin
21.09.2017
09:48:55
ENGINE = ReplacingMergeTree(date, (id, timestamp), (id, date, timestamp, resource, platform, userid), 8192)

при запросе по date всегда весь месяц читает

Andrew
21.09.2017
09:49:37
ENGINE = ReplacingMergeTree(date, (id, timestamp), (id, date, timestamp, resource, platform, userid), 8192)
если вы не фильтруете по id то всегда пробегается по всей партиции. Если вы указываете фильтр на дату и на id, то будет пробегаться только по тому, что вы хотите

Konstantin
21.09.2017
09:50:13
понятно, спасибо

Vladislav
21.09.2017
09:50:24
Добрый день :) Никто не сталкивался с большим потреблением памяти на Alter Table (Add column)? У нас после него CH съел всё доступную память и отказывается отдавать :(

Vladislav
21.09.2017
10:15:10
Ничего

Процессов выполняющихся нет

Konstantin
21.09.2017
10:16:45
лог?

если вы не фильтруете по id то всегда пробегается по всей партиции. Если вы указываете фильтр на дату и на id, то будет пробегаться только по тому, что вы хотите
т.е. фактически у меня нет других вариантов кроме как ждать скана всей партиции если надо скопировать всю таблицу, а в оперативку больше суток не влезает?

Google
Konstantin
21.09.2017
10:22:55
просто количество итераций очень большое

Andrew
21.09.2017
10:23:04
условный INSERT INTO copy AS SELECT * FROM table не требует хранения всего в оперативке.

Konstantin
21.09.2017
10:23:11
я получается вставляю 30 дней по одному и каждая вставка читает всю партицию

условный INSERT INTO copy AS SELECT * FROM table не требует хранения всего в оперативке.
я писал выше проблема в том что приходится select без столбца DATE брать и пересчитывать его

Vladislav
21.09.2017
10:26:06
лог?
В логе криминала тоже никакого. 3.9гб потрачено на запрос и всё.

В принципе CH с OOM не падает, но не понятно, почему процесс не отдаёт память, если её не использует

Tima
21.09.2017
10:28:44
Vladislav
21.09.2017
10:30:03
А это что-то аффектило у вас?

Tima
21.09.2017
10:31:13
Вроде нет, но когда CH без нагрузки отожрал 40% памяти (примерно 30Гб) и не отдает - подозрително

Paul
21.09.2017
10:35:26
коллеги, дурацкий вопрос: есть таблица, в ней есть ключ. Что будет, если в таблицу вставить строку, у которой ключ совпадет с уже существущей? Она перезапишется? Движок MergeTree

Александр
21.09.2017
10:37:27
Нет, не перезапишется. По крайней мере у меня данные дублируются

Vladislav
21.09.2017
10:39:34
Вроде нет, но когда CH без нагрузки отожрал 40% памяти (примерно 30Гб) и не отдает - подозрително
Более чем. У нас схожий кейс. Надеюсь, @milovidov_an прокомментирует.

Max
21.09.2017
11:07:43
привет. а подскажите, у меня есть gziped tsv я могу его как то лить напрямую? или нужно распаковывать?

Paul
21.09.2017
11:09:57
можно через zcat как минимум

он на лету распаковывает

Вася
21.09.2017
11:27:49
привет. а подскажите, у меня есть gziped tsv я могу его как то лить напрямую? или нужно распаковывать?
Если по http льёте, то можно выставить заголовок Content-Encoding: gzip и лить.

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