Я бы хотел запустить lighGBM.LGBMRegressor на кластере блоков данных с помощью pyspark.
Мой код был разработан на основе:
https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRegressor.html#lightgbm .LGBMRegressor.fit
import lightgbm as lgb
gbm_regressor = lgb.LGBMRegressor(...)
gbm_regressor.fit(x_train, y_train)
Здесь x_train и y_train - это фрейм данных и список pyspark. Исходя из приведенной выше ссылки, API-интерфейс fit () должен иметь следующий вид:
X (array-like or sparse matrix of shape = [n_samples, n_features]) – Input feature matrix.
y (array-like of shape = [n_samples]) – The target values (class labels in classification, real numbers in regression).
Мне нужно преобразовать X и y в массив на numpy.
new_x_train = np.array(x_train.select(x_train.columns).collect())
, но это заняло долгое время, чтобы сделать коллекцию, хотя я выделил достаточно памяти для этого. Наконец, я получил ошибку:
Error while obtaining a new communication channel
ConnectException error: This is often caused by an OOM error that causes the connection to the Python REPL to be closed. Check your query's memory usage.
Мои данные для x_train могут быть 40 ГБ (с 30 миллионами строк), а узел драйвера имеет 128 ГБ памяти.
Может кто-нибудь помочь мне выяснить, почему я получил эту ошибку?
спасибо