Size: a a a

ClickHouse не тормозит

2020 May 19

S

SkyDigital in ClickHouse не тормозит
Друзья, а подскажите пожалуйста, как понять, что INSERT прошел успешно. Вот тут https://habr.com/ru/company/yandex/blog/303282/ пишут такое:

"Вставлять данные всегда следует пачками не слишком маленького размера. При этом вставка блоков данных размера до max_insert_block_size (= 1 048 576 строк по умолчанию), является атомарной: блок данных либо целиком вставится, либо целиком не вставится. В случае разрыва соединения в процессе вставки, вы можете не знать, вставился ли блок данных. Для достижения exactly-once семантики, для реплицированных таблиц, поддерживается идемпотентность: вы можете вставить один и тот же блок данных повторно, возможно на другую реплику, и он будет вставлен только один раз."

вы можете не знать.. а как узнать?

Вставка через ODBC коннектор
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Artamoshin
Добрый день! Не получается подключить словарь, значениями которого являются NULL. Так и должно быть?
CREATE TABLE example (
   key Int32,
   value Nullable(Int32)
)
ENGINE = MergeTree()
ORDER BY key;

INSERT INTO example VALUES (1, 100), (2, 200), (3, NULL);

<yandex>
   <dictionary>
       <name>example_dict</name>
       <source>
             <clickhouse>
               <host>localhost</host>
               <user>default</user>
               <password></password>
               <db>default</db>
               <port>9000</port>
               <table>example</table>
               <where></where>
             </clickhouse>
       </source>
       <layout>
           <flat/>
       </layout>
       <structure>
           <id>
               <name>key</name>
           </id>
           <attribute>
               <name>key</name>
               <type>Int32</type>
               <null_value>0</null_value>
           </attribute>
           <attribute>
               <name>value</name>
               <type>Int32</type>
               <null_value>0</null_value>
           </attribute>
       </structure>
       <lifetime>15</lifetime>
   </dictionary>
</yandex>

SYSTEM RELOAD DICTIONARY 'example_dict';
Code: 349, e.displayText() = DB::Exception: Cannot convert NULL value to non-Nullable type: while converting source column value to destination column value (version 20.4.2.9 (official build))
кмк неправильное описание словаря. Почему тут есть attribute> <name>key</name> ? Там уже был <id> <name>key</name>
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
SkyDigital
Друзья, а подскажите пожалуйста, как понять, что INSERT прошел успешно. Вот тут https://habr.com/ru/company/yandex/blog/303282/ пишут такое:

"Вставлять данные всегда следует пачками не слишком маленького размера. При этом вставка блоков данных размера до max_insert_block_size (= 1 048 576 строк по умолчанию), является атомарной: блок данных либо целиком вставится, либо целиком не вставится. В случае разрыва соединения в процессе вставки, вы можете не знать, вставился ли блок данных. Для достижения exactly-once семантики, для реплицированных таблиц, поддерживается идемпотентность: вы можете вставить один и тот же блок данных повторно, возможно на другую реплику, и он будет вставлен только один раз."

вы можете не знать.. а как узнать?

Вставка через ODBC коннектор
Если http code = 200, или OK в native протоколе
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Artamoshin
Добрый день! Не получается подключить словарь, значениями которого являются NULL. Так и должно быть?
CREATE TABLE example (
   key Int32,
   value Nullable(Int32)
)
ENGINE = MergeTree()
ORDER BY key;

INSERT INTO example VALUES (1, 100), (2, 200), (3, NULL);

<yandex>
   <dictionary>
       <name>example_dict</name>
       <source>
             <clickhouse>
               <host>localhost</host>
               <user>default</user>
               <password></password>
               <db>default</db>
               <port>9000</port>
               <table>example</table>
               <where></where>
             </clickhouse>
       </source>
       <layout>
           <flat/>
       </layout>
       <structure>
           <id>
               <name>key</name>
           </id>
           <attribute>
               <name>key</name>
               <type>Int32</type>
               <null_value>0</null_value>
           </attribute>
           <attribute>
               <name>value</name>
               <type>Int32</type>
               <null_value>0</null_value>
           </attribute>
       </structure>
       <lifetime>15</lifetime>
   </dictionary>
</yandex>

SYSTEM RELOAD DICTIONARY 'example_dict';
Code: 349, e.displayText() = DB::Exception: Cannot convert NULL value to non-Nullable type: while converting source column value to destination column value (version 20.4.2.9 (official build))
<attribute>
               <name>value</name>
               <type>Int32</type>
               <null_value>0</null_value>
               <expression>assumeNotNull(value)</expression>
           </attribute>


у меня заработало

SELECT *
FROM dict.example_dict

┌─key─┬─value─┐
│   1 │   100 │
│   2 │   200 │
│   3 │     0 │
└─────┴───────┘
источник

AA

Alexander Artamoshin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
кмк неправильное описание словаря. Почему тут есть attribute> <name>key</name> ? Там уже был <id> <name>key</name>
Да, можно не указывать
            <attribute>
               <name>key</name>
               <type>Int32</type>
               <null_value>0</null_value>
           </attribute>

Но проблема остается. Пока в таблице example есть NULL значение - словарь не загружается
источник

AA

Alexander Artamoshin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
<attribute>
               <name>value</name>
               <type>Int32</type>
               <null_value>0</null_value>
               <expression>assumeNotNull(value)</expression>
           </attribute>


у меня заработало

SELECT *
FROM dict.example_dict

┌─key─┬─value─┐
│   1 │   100 │
│   2 │   200 │
│   3 │     0 │
└─────┴───────┘
Спасибо, попробую
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Artamoshin
Спасибо, попробую
<yandex>
   <dictionary>
       <name>example_dict</name>
       <source>
             <clickhouse>
               <host>localhost</host>
               <user>default</user>
               <password></password>
               <db>default</db>
               <port>9000</port>
               <table>example</table>
               <where></where>
             </clickhouse>
       </source>
       <layout>
           <flat/>
       </layout>
       <structure>
           <id>
               <name>key</name>
           </id>
           <attribute>
               <name>value</name>
               <type>Int32</type>
               <null_value>0</null_value>
               <expression>assumeNotNull(value)</expression>
           </attribute>
       </structure>
       <lifetime>15</lifetime>
   </dictionary>
</yandex>
источник

МА

М Арт in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
у вас отличается результирущая строка, она рендерится по разному, проверить это можно так

select timestamp, toString(timestamp, 'UTC') xxxxx
from t where timestamp=toDateTime('2020-05-19 00:00:00', 'UTC')
Спасибо, интересный эффект
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
М Арт
Спасибо, интересный эффект
КХ клиенты сами рендерят даты  в строки  и делают это в зависимости от их таймзоны. JDBC при рендеринге и переводит из таймзоны сервера в таймзону клиента. КХ клиент тоже, но так как клиент запущен обычно на сервере, то там таймзона обычно совпадает.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alex
Подскажите пожалуйста, где в kittenhouse указать пароль к базе кликхауса? А то у меня ошибка при kittenhouse -u='' -g='':

ClickHouse server returned HTTP code 500: Code: 516, e.displayText() = DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name
-u='default' ?
источник

A

Alex in ClickHouse не тормозит
делал и не только его), он требует пользователя от которого запускать процес кажется...
сейчас перестанавливаю сервер, может конфиг запорол или еще чего.
источник

A

Alex in ClickHouse не тормозит
clickhouse-server start
Processing configuration file 'config.xml'.

Ошибка: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = File not found: config.xml, Stack trace (when copying this message, always include the lines below):
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Victor A
добрый день. не нашел что это за ошибка и как ее лечить может кто подскажет? clickhouse Code: 76, e.displayText() = DB::Exception: Cannot open file , errno: 24, strerror: Too many open files, e.what() = DB::Exception
cat security/limits.d/clickhouse.conf
clickhouse soft nofile 262144
clickhouse hard nofile 262144
источник

A

Alex in ClickHouse не тормозит
Alex
clickhouse-server start
Processing configuration file 'config.xml'.

Ошибка: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = File not found: config.xml, Stack trace (when copying this message, always include the lines below):
при этом сервер после установки работает, а на команды не реагирует.
источник

A

Artem in ClickHouse не тормозит
а можно как то посмотреть сколько колонка занимает в конкретной партиции?
а то в
system.columns
полный размер по всем партициям. а В
system.parts
нет информации по колонкам
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Artem
а можно как то посмотреть сколько колонка занимает в конкретной партиции?
а то в
system.columns
полный размер по всем партициям. а В
system.parts
нет информации по колонкам
parts_columns
источник

A

Artem in ClickHouse не тормозит
select partition, column, sum(bytes_on_disk) as sz from system.parts_columns where partition = '202004' and table= 'impressions' group by partition, column order by sz desc;

почему то для всех возвращает один и тот же размер в колонке sz,который равняется размеру партиции
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Artem
select partition, column, sum(bytes_on_disk) as sz from system.parts_columns where partition = '202004' and table= 'impressions' group by partition, column order by sz desc;

почему то для всех возвращает один и тот же размер в колонке sz,который равняется размеру партиции
data_compressed_bytes data_uncompressed_bytes

where ... and active
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
а нет, колонки column_data_compressed_bytes column_data_uncompressed_bytes
column_bytes_on_disk
источник

A

Artem in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
data_compressed_bytes data_uncompressed_bytes

where ... and active
SELECT 
   partition,
   column,
   sum(data_compressed_bytes) AS sz
FROM system.parts_columns
WHERE (partition = '202004') AND (table = 'impressions') AND active
GROUP BY
   partition,
   column
ORDER BY sz DESC


Все равно сумма такая как будто group by не написан получается
источник