Я работаю с datashader и dask, но у меня возникают проблемы при построении графика с работающим кластером. Чтобы сделать его более конкретным, у меня есть следующий пример (встроенный в график боке):
import holoviews as hv
import pandas as pd
import dask.dataframe as dd
import numpy as np
from holoviews.operation.datashader import datashade
import datashader.transfer_functions as tf
#initialize the client/cluster
cluster = LocalCluster(n_workers=4, threads_per_worker=1)
dask_client = Client(cluster)
def datashade_plot():
hv.extension('bokeh')
#create some random data (in the actual code this is a parquet file with millions of rows, this is just an example)
delta = 1/1000
x = np.arange(0, 1, delta)
y = np.cumsum(np.sqrt(delta)*np.random.normal(size=len(x)))
df = pd.DataFrame({'X':x, 'Y':y})
#create dask dataframe
points_dd = dd.from_pandas(df, npartitions=3)
#create plot
points = hv.Curve(points_dd)
return hd.datashade(points)
dask_client.submit(datashade_plot,).result()
Это вызывает:
TypeError: can't pickle weakref objects
У меня есть теория, что это происходит потому, что вы не может распределять операции обмена данными в кластере. Извините, если это вопрос новичков, я был бы очень признателен за любой совет, который вы могли бы мне дать.