ScriptKiddo,
Если пытаться загрузить датасет без транспонирования, то так:
import dask.dataframe as dd
data1 = dd.read_csv('/mnt/data1/MAF005.csv', sep=' ', header=None)
И больше ничего не происходит. Загружено только одно ядро, объем занимаемой оперативной памяти не увеличивается.
Вчера попробовал загрузить кусок 27Гб в транспонированном виде (чтобы строк было больше, чем столбцов). Но даск в его исходной реализации не умеет транспонировать обратно. Так что пришлось использовать modin, который тоже имеет даск под капотом.
#запуск локального кластера
from distributed import Client, LocalCluster
cluster = LocalCluster()
client = Client(cluster)
#библиотеки
import os
os.environ["MODIN_ENGINE"] = "dask" # Modin will use Dask
import modin.pandas as pd
import numpy as np
from sklearn.feature_selection import VarianceThreshold
import glob
#загрузка транспонированного файла и обратная трансформация
data = pd.read_csv('/mnt/data1/MAF005t.csv', sep=' ', header=None)
data = data.T
data.columns = data.iloc[0]
data = data[1:]
data = data.drop(columns=['FID','IID','PAT','MAT','SEX',"PHENOTYPE"], axis=1)
#попытка очистить датасет от столбцов с нулевой и околонулевой дисперсией
try:
sel = VarianceThreshold(threshold=0.2)
sel.fit(data)
concol = [column for column in data.columns
if column not in data.columns[sel.get_support()]]
data.drop(concol, axis=1, inplace = True)
data.to_csv(f'/mnt/data1/MAFIA005_output.csv')
except ValueError:
print('не подошел по 0.2')
#попытка сделать PCA
from sklearn.decomposition import PCA
pca = PCA(0.99)
pca.fit(data)
dfpca = pca.transform(data)
data.head()
dfpca.head()
Даск в чистом виде просто не загружает данные, а в реализации modin сыпятся ошибки.
Ошибки примерно такого рода в связи с потерей коннекта к воркерам:
"OSError: Timed out during handshake while connecting to tcp://127.0.0.1:36643 after 30 s
distributed.worker - ERROR - Worker stream died during communication: tcp://127.0.0.1:44957"
Хотя, судя по дашборде даска они все равно дальше работают.
Ещё я писал про ошибки лямбда. Они выглядят вот так: "CancelledError: lambda-3a6d8a1b-bccd-486a-9938-337ed9d52be4"
За эти два дня я попробовал Dask. На игрушечных данных всё работает гладко. Но как только перехожу к реальным данным, так начинаются проблемы. Реальные данные даже не пошли в память (следил через htop и дашборду даска) за пол дня работы. Кол-во потребляемой памяти оставалось неизменным, но пара ядер было активно.
В середине рабочего дня отрезал кусок в 27Гб от основного датасета. И даск пять часов пытался сделать PCA - в итоге выдал ошибку, что значение в ячейке nan, бесконечность или не помещается в int64. Хотя, как я и говорил, данные состоят из 2,1 и 0.
Сыпятся ошибки, связанные с тем, что воркеры перестают отвечать, какие-то ошибки лямбда где-то внутри даска (забыл заскринить, уже не на работе). Как я понял, даск наследует всё слабые стороны пандаса и принципиально не может работать с данными, в которых количество столбцов исчисляется миллионами.
Спасибо. Скажу честно, что я никогда не разворачивал ни кликхаус, ни даск. С даском встречался только в виде питоновской библиотеки "modin".
Только начал работать дата саентистом и не предполагал, что нужно будет самому разворачивать такую инфраструктуру...
На счет даска, как я понимаю, нужно настраивать какие-то кластерные решения? Это же не просто питоновская библиотека. А на счет СУБД у вас нет какого-нибудь мануала, чтобы как-нибудь разобраться в том, как это все самому организовать?
p.s. На предприятии нет развернутой под это дело бд или кластера с даском. Поэтому я и ищу обходные варианты.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Если пытаться загрузить датасет без транспонирования, то так:
И больше ничего не происходит. Загружено только одно ядро, объем занимаемой оперативной памяти не увеличивается.
Вчера попробовал загрузить кусок 27Гб в транспонированном виде (чтобы строк было больше, чем столбцов). Но даск в его исходной реализации не умеет транспонировать обратно. Так что пришлось использовать modin, который тоже имеет даск под капотом.
Даск в чистом виде просто не загружает данные, а в реализации modin сыпятся ошибки.
Ошибки примерно такого рода в связи с потерей коннекта к воркерам:
"OSError: Timed out during handshake while connecting to tcp://127.0.0.1:36643 after 30 s
distributed.worker - ERROR - Worker stream died during communication: tcp://127.0.0.1:44957"
Хотя, судя по дашборде даска они все равно дальше работают.
Ещё я писал про ошибки лямбда. Они выглядят вот так: "CancelledError: lambda-3a6d8a1b-bccd-486a-9938-337ed9d52be4"