Обсуждаем ClickHouse
Надо читать лог кипера. Возможно мало. Неделю назад тут писали что 30 пришлось памяти поставить чтобы кипер заработал, но снепшот там был гигабайт
Читать полностью…4гб ОЗУ для кипера это мало?
всего реплик 4
кворум из 3 узлов на каждом по 3гб ОЗУ стоит
Но вообще есть для таких вопросов документация клика со встроенным AI, плюс докладов куча.
Читать полностью…по крайней мере, можно спросить у clickhouse AI
Читать полностью…Коллеги, может где то есть разъяснение почему именно так:
Производим 3 insert в некую таблицу.
Идём в каталог таблице. Мы видим три каталога относящиеся к трём командам insert.
Вопрос вот в чем!!
Вижу папки all_1_1_0,
all_2_2_0, all_3_3_0
Почему именно такие имена.
Первая цифра ладно, допустим номер папки. Что с остальными??
по цпу потребление 20%
ram около 66%
сам клик под 90% cpu уходит
С указанием или без запрос не работал.
С 25.6 работает
Спасибо. А если без pandas, то как лучше попробовать?
Читать полностью…Пытался без pandas, не зашло, решил поработать с типами данных.
Вот мой код до pandas:
reader = csv.reader(StringIO(data), delimiter='\t')Читать полностью…
header = [col.replace('ym:s:', '') for col in next(reader)] # Упрощённый маппинг
rows = list(reader)
batch_size = 10000
for i in range(0, len(rows), batch_size):
batch = []
for row in rows[i:i+batch_size]:
row_dict = dict(zip(header, row))
row_dict = convert_dates(row_dict)
batch.append(row_dict)
try:
client.insert('yaMetLogs', batch)
print(f"Вставлено {min(i+batch_size, len(rows))}/{len(rows)} строк")
except Exception as e:
print(f"Ошибка при вставке: {str(e)}")
print("Проблемная строка:", batch[0] if batch else "нет данных")
я не про это, я про то что с помощью Null таблицу -> MV -> *mergetree вы можете делать любые трансформации при вставке
https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
Я поискал в интернете и не нашел чтобы где-то говорилось про то, что вставка в связку null engine -> MV -> ReplicatedMergeTree
обеспечивает exactly once.
Если допустить, что у меня всегда вставка в одну партицию, есть поблочная дедупликация в целевой mergetree и deduplicate_blocks_in_dependent_materialized_views=1
, то можно ли с уверенностью сказать что данные не потеряются и дубликатов не будет?
вы так и будете отвечать на вопросы выборочно?
Читать полностью…Да вот жешь пытался найти. Видимо плохо искал
Читать полностью…{partition_id}_{min_block_number}_{max_block_number}_{level}
level - сколько раз данные этого парта проходили слияние.
Каждый инсерт порождает один или несколько партов (в зависимости от того, в какое количество partitions попадают его данные), и все эти парты поначалу имеют level 0.
По мере слияний - укрупняются, получают бОльшие значение номера
Потому что таблицы не партиционировали, и все записи будут храниться в партиции под названием all, можете посмотреть в system.parts, емнип.
Читать полностью…у кипера HDD или NVME ? и сколько там ОЗУ ?
Читать полностью…сколько CPU / RAM и диски какие под keeper?
какое окружение kubernetes или что-то другое?
А в чем смысл lag по всему набору строк без указания смещения?
Читать полностью…keeper как отдельный демон или в составе clickhouse-server?
Читать полностью…обычные реквесты
и в метрику и в клик
Читать полностью…
url_params = urlencode(
[
('date1', user_request.start_date_str),
('date2', user_request.end_date_str),
('source', user_request.source),
('fields', ','.join(user_request.fields))
]
)
headers = {'Authorization': 'OAuth ' + user_request.token}
url = '{host}/management/v1/counter/{counter_id}/logrequests/evaluate?'\
.format(host=HOST, counter_id=user_request.counter_id) + url_params
r = requests.get(url, headers=headers)
все отлично работает без пандас
у Метрики был скрипт на обычных реквестах, но потом им стало лень его поддерживать и прикрыли
у меня до сих пор работает
но если хочется пандас, то вот примитивный пример
https://github.com/handgunman/primitive-scripts/blob/main/logs_download_simple.py
Добрый вечер. Подскажите, пожалуйста, какой наилучший алгоритм для загрузки с помощью python скрипта логов визитов из API Метрики в таблицу ClickHouse.
Я получаю данные
response_result = requests.get(api_url_result, headers=headers)
tsv_data = StringIO(response_result.text)
df = pd.read_csv(tsv_data, sep='\t')
thousand separator не поддерживается, и в c++ printf тоже емнип не умеет
Читать полностью…До запятой, разделить разрядов, например 55 555 555.55 через пробел, что-то все варианты перебрал, ошибка. SELECT printf('%.01f',55555555.55). Что нужно указать до точки в функции...
Читать полностью…