Подскажите по DB::Exception: Unknown JOIN variant..

276 views
Skip to first unread message

Mike Eremin

unread,
Jun 22, 2016, 11:41:47 AM6/22/16
to ClickHouse
Всем добрый день,

пытаемся на кликхаусе повторить несколько рабочих запросов. Если коротоко:

Кластер из 3х нод, без репликайций. Запущены на виртуалбоксах. У всех одинаковые условия. 16 ядер + 128 Гб памяти.

таблица А большая (пусть будет id, B_id, data) и таблица B - словарь (id, data, somevar)

запрос элементарный:

SELECT
    data,
    count(*) AS cnt
FROM A GLOBAL ANY INNER JOIN B ON B.id = A.B_id
WHERE (somevar = 1) 
GROUP BY
    data
LIMIT 10

В таблице А - 9 млрд строк, в В - 200 млн.

Пару минут запрос обрабатывается, затем падает с такими вот показаниями:

→ Progress: 314.11 million rows, 36.20 GB (1.90 million rows/s., 218.43 MB/s.) Received exception from server:
Code: 121. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Unknown JOIN variant..
0 rows in set. Elapsed: 165.852 sec. Processed 314.11 million rows, 36.20 GB (1.89 million rows/s., 218.26 MB/s.)

ID-шки из таблице Б есть все в таблице А и в А нет лишних. 

На ровно таких же данных ровно такой же запрос отрабатывает в вертике без каких-то проблем.
Подскажите, куда капнуть? 



man...@gmail.com

unread,
Jun 22, 2016, 9:32:34 PM6/22/16
to ClickHouse
Синтаксис JOIN с использованием ON не поддерживается.
(При этом запрос парсится и начинает выполняться, потому что функциональность находится в разработке.)

Вместо этого, используйте синтаксис с USING и напишите запрос в виде JOIN подзапроса с подзапросом.
На примере вашего запроса, это будет так:

SELECT data, count(*) AS cnt
FROM
(
    SELECT B_id AS key, data FROM A
)
GLOBAL ANY INNER JOIN
(
    SELECT id AS key FROM B WHERE somevar = 1
)
USING key

GROUP BY data
LIMIT 10


Если запрос действительно такой (мы не используем B.data, B.somevar снаружи), то его также можно написать с помощью IN:

SELECT data, count(*) AS cnt FROM A WHERE B_id GLOBAL IN (SELECT id FROM B WHERE somevar = 1)

Mike Eremin

unread,
Jun 22, 2016, 9:41:34 PM6/22/16
to ClickHouse
Спасибо большое, попробуем!
Мы просто пытаемся прозрачно перенести sql в кликхаус. 
Недостаточно мануал почитали. 

p.s. Скорость insert потрясающая. 
Reply all
Reply to author
Forward
0 new messages