Size: a a a

ClickHouse не тормозит

2021 March 24

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Egor Mateshuk
всем привет.

а кто-нибудь укладывал в клик данные из кафка+авро, где одно из полей было бы массивом записей? что имею в виду:

есть схема авро, в которой одно из полей выглядит так

{
     "name": "some_objects",
     "type": {
       "type": "array",
       "items": {
         "type": "record",
         "name": "SomeRecord",
         "fields": [
           {
             "name": "field1",
             "type": "long",
             "default": 0
           },
           {
             "name": "field2",
             "type": "boolean",
             "default": false
           }
         ]
       }
     },
     "default": []
   },


и есть запрос для создания таблицы, где поле описано как

some_objects Nested
 (field1 Int64,
  field2 String),


таблица успешно создается, но при чтении вылетает Field some_objects.field1 not found in Avro schema.

с одной стороны это логично, потому что там лежит внутри не record, а массив record. но с другой стороны - я не могу в клике создать Array(Nested). какой тогда должен быть тип?

(нашел похожий кейс - https://github.com/ClickHouse/ClickHouse/issues/9707, но тут нет массива, просто вложенная запись)
Array(Tuple(Int64, String))
но все это херня и работать не будет, и авро сделан на отвали и все равно все сломается, если не сегодня, то через неделю

знаю что для того чтобы массивы более менее работали, люди пишут в avro массивы как строки, с числами через запятую, потом парсят, непонятно правда зачем им авро и нафига такие мучения
источник

VL

Vadim Lazovskiy in ClickHouse не тормозит
Привет
Подскажите, пожалуйста, как пользоваться внешними словарями подгруженными из xml.
Могу сделать
SELECT dictGet('dict1', 'user_id', toUInt64(1));

Но применение той же функции внутри сложного селекта из таблицы дает ошибку
DB::Exception: external dictionary 'dict1' not found

Натыкался, что нужно указывать базу, типа default.dict1, но перепробовав все варианты успеха не достигнул.

Вот информация из system.dictionaries, база там пустая:
Row 1:
──────
database:                    
name:                        dict1
uuid:                        00000000-0000-0000-0000-000000000000
status:                      LOADED
origin:                      /etc/clickhouse-server/external_mysql_dictionary.xml
type:                        Flat
key:                         UInt64
attribute.names:             ['id','user_id']
attribute.types:             ['UInt64','UInt64']
bytes_allocated:             37360
query_count:                 1
hit_rate:                    1
element_count:               106
load_factor:                 0.103515625
source:                      MySQL: xxx.xxx
lifetime_min:                540
lifetime_max:                600
loading_start_time:          2021-03-24 18:03:00
last_successful_update_time: 2021-03-24 18:03:00
loading_duration:            0.016
last_exception:
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vadim Lazovskiy
Привет
Подскажите, пожалуйста, как пользоваться внешними словарями подгруженными из xml.
Могу сделать
SELECT dictGet('dict1', 'user_id', toUInt64(1));

Но применение той же функции внутри сложного селекта из таблицы дает ошибку
DB::Exception: external dictionary 'dict1' not found

Натыкался, что нужно указывать базу, типа default.dict1, но перепробовав все варианты успеха не достигнул.

Вот информация из system.dictionaries, база там пустая:
Row 1:
──────
database:                    
name:                        dict1
uuid:                        00000000-0000-0000-0000-000000000000
status:                      LOADED
origin:                      /etc/clickhouse-server/external_mysql_dictionary.xml
type:                        Flat
key:                         UInt64
attribute.names:             ['id','user_id']
attribute.types:             ['UInt64','UInt64']
bytes_allocated:             37360
query_count:                 1
hit_rate:                    1
element_count:               106
load_factor:                 0.103515625
source:                      MySQL: xxx.xxx
lifetime_min:                540
lifetime_max:                600
loading_start_time:          2021-03-24 18:03:00
last_successful_update_time: 2021-03-24 18:03:00
loading_duration:            0.016
last_exception:
нет, про базу это для НЕ-xml словарей.

а у вас Distributed запрос, и на шарде куда прилетает запрос нету словаря. Это можно решить 2 спрособами, создать словари на всех нодах, или обернуть () и делать обращение к словарю на инициаторе
источник

VL

Vadim Lazovskiy in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет, про базу это для НЕ-xml словарей.

а у вас Distributed запрос, и на шарде куда прилетает запрос нету словаря. Это можно решить 2 спрособами, создать словари на всех нодах, или обернуть () и делать обращение к словарю на инициаторе
Преклоняюсь перед вашими экстрасенсорными навыками. Да, действительно, запрос - Distributed и да, на каких-то шардах словаря не было

Огромное спасибо.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
В Альтинити только членов Psi Corps берут
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
источник

EM

Egor Mateshuk in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
Array(Tuple(Int64, String))
но все это херня и работать не будет, и авро сделан на отвали и все равно все сломается, если не сегодня, то через неделю

знаю что для того чтобы массивы более менее работали, люди пишут в avro массивы как строки, с числами через запятую, потом парсят, непонятно правда зачем им авро и нафига такие мучения
Спасибо большое)
источник

R

Rodion in ClickHouse не тормозит
Всем привет, подскажите пожалуйста, я вставляю данные в клик следующим образом cat file.orc | curl -k --negotiate -u : 'clickhouse/?database=database&query=INSERT+INTO+table+FORMAT+ORC' --data-binary @-
источник

R

Rodion in ClickHouse не тормозит
получаю статус 200
источник

R

Rodion in ClickHouse не тормозит
и не вижу данных в таблице
источник

R

Rodion in ClickHouse не тормозит
в чем может быть дело?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Rodion
Всем привет, подскажите пожалуйста, я вставляю данные в клик следующим образом cat file.orc | curl -k --negotiate -u : 'clickhouse/?database=database&query=INSERT+INTO+table+FORMAT+ORC' --data-binary @-
в логе КХ надо смотреть трассу инсерта
источник

R

Rodion in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
в логе КХ надо смотреть трассу инсерта
у меня безопасная безопасность
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Rodion
у меня безопасная безопасность
в общем-то без разницы. ORC пользоваться невозможно для заливки, там все недоделано.
источник

R

Rodion in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
в общем-то без разницы. ORC пользоваться невозможно для заливки, там все недоделано.
а чем лучше всего пользоваться?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Rodion
а чем лучше всего пользоваться?
TSV
источник

D

Dj in ClickHouse не тормозит
Rodion
а чем лучше всего пользоваться?
parquet если готовите данные (в большом объеме) из приложения
источник

R

Rodion in ClickHouse не тормозит
Dj
parquet если готовите данные (в большом объеме) из приложения
а с паркетам работа лучше чем с орками?
источник

R

Rodion in ClickHouse не тормозит
Dj
parquet если готовите данные (в большом объеме) из приложения
просто у нас из паркета вроде как есть проблемы с эрреями
источник

D

Dj in ClickHouse не тормозит
Rodion
а с паркетам работа лучше чем с орками?
ОРКи не пробовали, в паркете были проблемы с некоторыми типами, тикеты на гитхабе есть
источник