Size: a a a

ClickHouse не тормозит

2019 November 23

pk

papa karlo in ClickHouse не тормозит
какая разница, все равно два раза бегать.
источник

AI

Anton Isaykin in ClickHouse не тормозит
Просто запрос огромный и эта задача — малая его часть. Вдруг есть какой-то метод, который сам в себе два раза бегает?
источник

RK

Roman Kupriyanov in ClickHouse не тормозит
открывается
источник

RK

Roman Kupriyanov in ClickHouse не тормозит
есть ли конструкция чтобы написать ... WHERE FieldName = inList(val1,val2,val3) чтобы не писать портянку из AND'ов?
источник

pk

papa karlo in ClickHouse не тормозит
а что такое = inList
источник

F🚜

Felixoid 🚜🇩🇪... in ClickHouse не тормозит
Roman Kupriyanov
открывается
Это было в мае 2017, когда на Украине заблокировали всю AS Яндекса
источник

RK

Roman Kupriyanov in ClickHouse не тормозит
papa karlo
а что такое = inList
это гипотетическая функция: WHERE FieldName = inList(val1,val2,val3) можно заменить на выражение WHERE FieldName = val1 AND FieldName = val2 AND FieldName = val3 вот я и спрашиваю есть ли гипотетическая функция inList чтобы все эти AND можно было сократить до конструкции WHERE FieldName = inList(val1,val2,val3)
источник

pk

papa karlo in ClickHouse не тормозит
>FieldName = val1 AND FieldName = val2
обычно результат этого выражения 0
источник

F🚜

Felixoid 🚜🇩🇪... in ClickHouse не тормозит
Roman Kupriyanov
это гипотетическая функция: WHERE FieldName = inList(val1,val2,val3) можно заменить на выражение WHERE FieldName = val1 AND FieldName = val2 AND FieldName = val3 вот я и спрашиваю есть ли гипотетическая функция inList чтобы все эти AND можно было сократить до конструкции WHERE FieldName = inList(val1,val2,val3)
источник

RK

Roman Kupriyanov in ClickHouse не тормозит
благодарю
источник
2019 November 24

AB

A B in ClickHouse не тормозит
Roman Kupriyanov
это гипотетическая функция: WHERE FieldName = inList(val1,val2,val3) можно заменить на выражение WHERE FieldName = val1 AND FieldName = val2 AND FieldName = val3 вот я и спрашиваю есть ли гипотетическая функция inList чтобы все эти AND можно было сократить до конструкции WHERE FieldName = inList(val1,val2,val3)
На всякий случай, у вас в примере AND, а предложенный IN() в развёрнутой форме это OR
источник

RK

Roman Kupriyanov in ClickHouse не тормозит
Спасибо за уточнение.
источник

A

Alex in ClickHouse не тормозит
всем привет 🙂
есть вопрос, как организовать запись примерно 8-10 млн строк в минуту в КХ кластер без ошибки
too many inserts?

сейчас пишу так: spark app тянет dataframe из presto/blob storage (там порядка 2-3 млрд строк),
выгребает по watermark_column (чисто техническая колонка с монотонно увеличивающимся значением,
в рамках одного значения около 3-5 млн строк) и пытается залить в КХ кусками по 2-3 watermark'a.
проблема в том, что при too many inserts запись всего spark dataframe не атомарна и что-то запишет,
а остаток dataframe'a - нет. и как результат у нас на одно значение watermark_column в target и source
количество строк по нему не будет сходиться.

буферные таблицы сейчас пробую, но может есть ещё способы писать такие объемы без лишнего сетапа?) заранее спасибо
источник

ДБ

Дмитрий Бережнов... in ClickHouse не тормозит
Alex
всем привет 🙂
есть вопрос, как организовать запись примерно 8-10 млн строк в минуту в КХ кластер без ошибки
too many inserts?

сейчас пишу так: spark app тянет dataframe из presto/blob storage (там порядка 2-3 млрд строк),
выгребает по watermark_column (чисто техническая колонка с монотонно увеличивающимся значением,
в рамках одного значения около 3-5 млн строк) и пытается залить в КХ кусками по 2-3 watermark'a.
проблема в том, что при too many inserts запись всего spark dataframe не атомарна и что-то запишет,
а остаток dataframe'a - нет. и как результат у нас на одно значение watermark_column в target и source
количество строк по нему не будет сходиться.

буферные таблицы сейчас пробую, но может есть ещё способы писать такие объемы без лишнего сетапа?) заранее спасибо
Покажите структуру таблицы. У вас во вставке больше одной партиции. Решается заменой выражения партиционирования у таблицы или на стороне клиента - формирование пачки с одним значением партишина
источник

A

Alex in ClickHouse не тормозит
Дмитрий, спасибо за ответ! таблицы ниже
источник

A

Alex in ClickHouse не тормозит
CREATE TABLE dwh.problem_table_name on cluster dwh_ch_1 (
stringWithHighCardinality String,
oneMoreStringWithHighCardinality String,
smallString String,
anotherSmallString String,
enumOf40Elements String,
smallString String,
column1 Int32,
column2 Int32,
enumOf200Elements String,
enumOf4000Elements String,
oneMoreSmallString String,
anotherString String,
anotherString2 String,
anotherString3 String,
anotherString4 String,
anotherString5 String,
enumOf100Elements String,
memoField String,
stringifiedJsonArray String,
lineCountByType Int32,
lineCountByAnotherQuery Int32,
smallString2 String,
booleanField Nullable(UInt8),
someTimestamp Int64,
idxDat
e Date,
watermark_column Int64)
ENGINE = ReplicatedMergeTree('/
clickhouse/tables/{shard}/dwh/problem_table_name', '{replica}')
PARTITION
BY idx_date
 \ORDER BY (idx_date,
watermark_column,
stringWithHighCardinality,
oneMoreStringWithHighCardinality,
enumOf40Elements,
someTimestamp) SETTINGS index_granularity = 8192;

CREATE TABLE dwh.problem_table_name_buffer on cluster dwh_ch_1 AS dwh.problem_table_name
ENGINE = Buffer(dwh, problem_table_name, 16, 10, 60, 4000000, 20000000, 100000000, 4000000000);
источник

A

Alex in ClickHouse не тормозит
большой размер буфера хочется иметь затем, чтобы хотя бы как-то ограничить background flush из буфера в целевую таблицу кликхаусом
источник

SS

Stepan Stepanov in ClickHouse не тормозит
как-то странно с датами получается
в config.xml timezone Europe/Moscow
а когда делаю запрос в бд - показывает -3 часа от Europe/Moscow
источник

SS

Stepan Stepanov in ClickHouse не тормозит
мб где-то устанавливать нужно зону соединения?
источник

ДБ

Дмитрий Бережнов... in ClickHouse не тормозит
Alex
CREATE TABLE dwh.problem_table_name on cluster dwh_ch_1 (
stringWithHighCardinality String,
oneMoreStringWithHighCardinality String,
smallString String,
anotherSmallString String,
enumOf40Elements String,
smallString String,
column1 Int32,
column2 Int32,
enumOf200Elements String,
enumOf4000Elements String,
oneMoreSmallString String,
anotherString String,
anotherString2 String,
anotherString3 String,
anotherString4 String,
anotherString5 String,
enumOf100Elements String,
memoField String,
stringifiedJsonArray String,
lineCountByType Int32,
lineCountByAnotherQuery Int32,
smallString2 String,
booleanField Nullable(UInt8),
someTimestamp Int64,
idxDat
e Date,
watermark_column Int64)
ENGINE = ReplicatedMergeTree('/
clickhouse/tables/{shard}/dwh/problem_table_name', '{replica}')
PARTITION
BY idx_date
 \ORDER BY (idx_date,
watermark_column,
stringWithHighCardinality,
oneMoreStringWithHighCardinality,
enumOf40Elements,
someTimestamp) SETTINGS index_granularity = 8192;

CREATE TABLE dwh.problem_table_name_buffer on cluster dwh_ch_1 AS dwh.problem_table_name
ENGINE = Buffer(dwh, problem_table_name, 16, 10, 60, 4000000, 20000000, 100000000, 4000000000);
1. Попробуйте на стороне спарка упорядочить чтение из источника по idx_date, чтобы во вставляемой пачке idx_date шли подарят
2. Вам точно нужен такой сложный ORDER BY?
источник