TGViewer
дата инженеретта дата инженеретта @data_engineerette · 3.43K subscribers
Post #247 2.04K
Как я забила всю оперативку

⭐️Нужно было переложить табличку из кх в s3 через Airflow. Табличка небольшая, проблем быть не должно

Идея №1

1️⃣Считать табличку из кх в pandas dataframe
2️⃣Сохранить датафрейм в .csv файл
3️⃣Залить в s3 через либу boto3

Пока тестирую и отлаживаю на 10 строках - все ок. Убираю лимит - и Airflow становится очень плохо, он не прогружается и не дает завершить таску 🥲

Смотрю в источник - там 12млн строк. Неужели pandas не может столько переварить? Очевидно, надо искать другой способ

Идея №2

Я раньше сталкивалась, что в кх можно прям запросом читать из s3. Вот так:

SELECT * FROM s3()


Оказывается, это работает и на запись!

INSERT INTO FUNCTION s3()
SELECT * FROM your_table


В эту функцию можно добавлять разные настройки. Из полезного - разбить вашу табличку на несколько файликов. Примерно такой код у меня работает:

INSERT INTO FUNCTION
s3(
'filename_{{_partition_id}}.csv.gz',
'S3_ACCESS_KEY',
'S3_SECRET_ACCESS_KEY',
'CSVWithNames'
)
PARTITION BY rand % 10
SELECT * FROM your_table;


Что тут есть?

⚫️{_partition_id} – это переменная, которая пробрасывается сама. Просто счетчик от 0
Если вставлять этот код в строку, нужно обязательно обрамить скобками {} дважды – иначе s3 воспринимает это по-другому и падает с ошибкой

⚫️.gz – алгоритм компрессии файликов

⚫️CSVWithNames – мы включаем названия столбцов первой строкой

⚫️PARTITION BY [столбец] - можно выбрать существующий или просто задать рандомно

И этот метод работает просто в разы быстрее. Теперь табличка на 12 млн строк пишется за несколько секунд 🙂
  • 🔥 21
  • 👍 3
More from @data_engineerette
  1. Sep 25, 2026Как прошла SmartData 2026? Я вот перечитываю свои впечатления от прошлого года и понимаю,…
  2. Sep 24, 2026Исследование data-people Тут ребята из DevCrowd запустили ежегодное исследование специалис…
  3. Sep 22, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  4. Sep 15, 2026Каким должен быть хороший DE? Меня однажды спросили на собесе: 🤩Какие 3 качества важны дл…
  5. Sep 12, 2026Mermaid-диаграммы Наконец-то дошли руки поковыряться в mermaid-диаграммах, это что за имба…
  6. Sep 2, 2026Iceberg — это внезапный бум или планомерная подготовка? Заметили, как с определенного моме…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →