реплика
2) Кластер из двух шардов по одной реплике на каждом.
Задача: джойнить данные из второго кликхауса с данными с первого. Пытался сделать это через remote. Но именно из той таблицы, откуда необходима информация с первого кликхауса не возвращает строки, совсем. Думаю, что там слишком много строк для функции remote (30 млрд). Это моё предположение. Есть ещё какие-то способы взять данные с двух кликхаусов. Может существует более эффективное решение, чем использование remote?
Если у вас 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 и вот этот миллион уже можно переслать. Покажите лучше свои селекты, без особой детализации колонок.
ни в коем случае не собирался тянуть 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 точно имеет доступ к этим строкам
Странно, что не работает remote. Вроде нет квот, в которые здесь можно было бы упереться. Но совет все равно один - почитайте логи. Скорее на host.clickhouse.com. Можно попробовать использовать таблицу Distributed, это чуть правильнее, чем remote.
можете дать доку на такое использование? или пример? хочу изучить. пока мои знания distributed ограничиваются созданием таблички с таким движком на шардированном кликхаусе для распределения данных по ключу шардирования. было бы круто это использовать и для извлечения данных с двух хостов кликхауса. заранее спасибо
Нет такой доки (или я ее не знаю). Ну и не очень понятно, что в ней можно написать, потому что в CH понятие "cluster" эфемерное и мало к чему обязывающее. Никто не мешает для некоторых Distributed таблиц описать отдельный, только им одним ведомый кластер, состоящий из части нод. Типичный паттерн - наряду с "настоящим" кластером, в котором есть шарды, описать кластер, в котором все ноды кластера описаны как реплики; это позволяет иметь какие-то данные на всех узлах кластера. Ну а ключ шардирования не нужен, если таблицы используются для чтения. По умолчанию Distributed не полагается на знание, где что лежит, а обращается ко всем таблицам, над которыми она создана.
Обсуждают сегодня