PARTIALLY_UNSUPERVISED Telegram 171
Недавно нужно было наколхозить простую тулзу для поиска семплов в большом датасете. Условно есть 200М семплов, доступных через AWS Athena, и к ним делаются запросы в духе select * from big_table where blah like '%blah%' and foo like '%bar%' limit 10;.

Делать все через Athena очень просто, но медленно (запросы редко занимают меньше 10 секунд) и небесплатно (получалось что-то вроде $0.05 за запрос, некритично, но не приятно). Напрашивается решение с частичным кэшированием: возьмем сабсет на 5% данных, положим его локально и будем обращаться к нему, а если не нашли достаточно семплов в локальном сабсете, тогда уже пойдем в Athena с медленным запросом. На практике оказалось, что 95%+ запросов можно удовлетворить сабсетом, все довольно быстро (до полутора секунды на запрос) и бесплатно.

Так как я ленивый, сперва уложил локальный сабсет в SQLite, чтобы не возиться с поднятием более серьезной базы. В принципе, этого было достаточно, но в познавательных целях решил потрогать DuckDB - это embedded OLAP (т.е. колоночная) SQL база данных. DuckDB ставится через pip install (впрочем, есть поддержка и для других языков), плотно интегрирована с pandas и parquet. Замена SQLite на DuckDB потребовала всего нескольких строк и ускорила поиск почти в два с половиной раза до малозаметных 600 мс.

Жду комментариев, что Настоящий Мужик бы поднял кластер Clickhouse, а не это все.
👍60🔥166😁4



tgoop.com/partially_unsupervised/171
Create:
Last Update:

Недавно нужно было наколхозить простую тулзу для поиска семплов в большом датасете. Условно есть 200М семплов, доступных через AWS Athena, и к ним делаются запросы в духе select * from big_table where blah like '%blah%' and foo like '%bar%' limit 10;.

Делать все через Athena очень просто, но медленно (запросы редко занимают меньше 10 секунд) и небесплатно (получалось что-то вроде $0.05 за запрос, некритично, но не приятно). Напрашивается решение с частичным кэшированием: возьмем сабсет на 5% данных, положим его локально и будем обращаться к нему, а если не нашли достаточно семплов в локальном сабсете, тогда уже пойдем в Athena с медленным запросом. На практике оказалось, что 95%+ запросов можно удовлетворить сабсетом, все довольно быстро (до полутора секунды на запрос) и бесплатно.

Так как я ленивый, сперва уложил локальный сабсет в SQLite, чтобы не возиться с поднятием более серьезной базы. В принципе, этого было достаточно, но в познавательных целях решил потрогать DuckDB - это embedded OLAP (т.е. колоночная) SQL база данных. DuckDB ставится через pip install (впрочем, есть поддержка и для других языков), плотно интегрирована с pandas и parquet. Замена SQLite на DuckDB потребовала всего нескольких строк и ускорила поиск почти в два с половиной раза до малозаметных 600 мс.

Жду комментариев, что Настоящий Мужик бы поднял кластер Clickhouse, а не это все.

BY partially unsupervised




Share with your friend now:
tgoop.com/partially_unsupervised/171

View MORE
Open in Telegram


Telegram News

Date: |

Judge Hui described Ng as inciting others to “commit a massacre” with three posts teaching people to make “toxic chlorine gas bombs,” target police stations, police quarters and the city’s metro stations. This offence was “rather serious,” the court said. Telegram channels fall into two types: How to create a business channel on Telegram? (Tutorial) “[The defendant] could not shift his criminal liability,” Hui said. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.”
from us


Telegram partially unsupervised
FROM American