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

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

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

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

8 ответов

10 просмотров

Если у вас 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 не полагается на знание, где что лежит, а обращается ко всем таблицам, над которыми она создана.

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта