184 похожих чатов

Коллеги, добрый день. Есть 2 кликхауса: 1) Один шард одна

реплика
2) Кластер из двух шардов по одной реплике на каждом.

Задача: джойнить данные из второго кликхауса с данными с первого. Пытался сделать это через remote. Но именно из той таблицы, откуда необходима информация с первого кликхауса не возвращает строки, совсем. Думаю, что там слишком много строк для функции remote (30 млрд). Это моё предположение. Есть ещё какие-то способы взять данные с двух кликхаусов. Может существует более эффективное решение, чем использование remote?

8 ответов

11 просмотров

Если у вас join простой (определенно inner), то можно смотреть сюда https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-clickhouse Ну а если сложный, то вам вообще мало что поможет. Разве что репликация этой таблицы из второго кликхауса в первый.

я правильно понимаю, что вы пытаетесь через select * вытянуть 30B записей с другого сервера и как-то их поджойнить? Нет, так оно не работает. Нужно эти 30B сгрупировать до 1M и вот этот миллион уже можно переслать. Покажите лучше свои селекты, без особой детализации колонок.

Roman-Merzliakov Автор вопроса
Boris
я правильно понимаю, что вы пытаетесь через select...

ни в коем случае не собирался тянуть 30B строк. запросы будут иметь подобный вид: select * from remote('host.clickhouse.com', database.table, 'user', 'password') where 1=1 and app_id = 'some_app_id' and user_id = '1642101002427-9134274996651573612' and toDate(event_time) = '2022-01-15'; вот такой запрос непосредственно на host.clickhouse.com занимает секунду и возвращает 15 строк. но через remote возвращает 0 строк. на host.clickhouse.com есть таблица database.table_1 , в которой 9B строк и там находятся частично строки из основной таблицы. оттуда без проблем возвращает нужные 15 строк. быть может где-то сидит ограничение для remote функции? мой юзер в row policy точно имеет доступ к этим строкам

Roman Merzliakov
ни в коем случае не собирался тянуть 30B строк. за...

Странно, что не работает remote. Вроде нет квот, в которые здесь можно было бы упереться. Но совет все равно один - почитайте логи. Скорее на host.clickhouse.com. Можно попробовать использовать таблицу Distributed, это чуть правильнее, чем remote.

Roman-Merzliakov Автор вопроса
Ilya Golshtein
Странно, что не работает remote. Вроде нет квот, в...

можете дать доку на такое использование? или пример? хочу изучить. пока мои знания distributed ограничиваются созданием таблички с таким движком на шардированном кликхаусе для распределения данных по ключу шардирования. было бы круто это использовать и для извлечения данных с двух хостов кликхауса. заранее спасибо

Roman Merzliakov
можете дать доку на такое использование? или приме...

Нет такой доки (или я ее не знаю). Ну и не очень понятно, что в ней можно написать, потому что в CH понятие "cluster" эфемерное и мало к чему обязывающее. Никто не мешает для некоторых Distributed таблиц описать отдельный, только им одним ведомый кластер, состоящий из части нод. Типичный паттерн - наряду с "настоящим" кластером, в котором есть шарды, описать кластер, в котором все ноды кластера описаны как реплики; это позволяет иметь какие-то данные на всех узлах кластера. Ну а ключ шардирования не нужен, если таблицы используются для чтения. По умолчанию Distributed не полагается на знание, где что лежит, а обращается ко всем таблицам, над которыми она создана.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта