в КХ, у неё столбец hash типа FixedString(16) (для MD5)
хочу в неё писать через Кафку
(CREATE TABLE IF NOT EXISTS table_local_kafka
AS table_local
ENGINE = Kafka()
SETTINGS
kafka_broker_list = ...:9092',
kafka_topic_list = '...',
kafka_group_name = '...',
kafka_format = 'JSONEachRow';
)
пуляю в кафку в формате JSONEachRow
{"hash": "..."}
но тут возникает беда )) JSON не оперирует двоичными данными. надо записать в escaped (\uABCD) виде, беру хэш
94eca6fcfbb89178dcd8de560e263c46
и пишу как
\u94ec\ua6fc\ufbb8\u9178\udcd8\ude56\u0e26\u3c46
но драйвер(?) кафки ругается,
DB::Exception: Too large value for FixedString(16): (while reading the value of key hash): (at row 1)
при этом, если выбирать из КХ, указывая формат вывод JSONEachRow, то КХ выводит в hash какую-то белиберду (понятное дело)...
т.е. выводить выводит, но принимать - чот нет )))
кто-то знает, как победить в виде JSONEachRow? (да, можно как TabSeparated, но это неспортивно )))
в кафка engine объявляете String. в select в MatView конвертите что хотите и как хотите, я бы в JSON писал нормальные строки и конвертил их функцией hex
логично... спасибо! (правда, схему таблицы придётся описывать новую))
Обсуждают сегодня