Как преобразовать столбец данных pyspark в массив numpy - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь преобразовать столбец данных pyspark, содержащий приблизительно 90 миллионов строк, в массив numpy.

Мне нужен массив в качестве входных данных для функции scipy.optimize.minimize.

Я пыталсяи преобразование в Pandas и использование collect(), но эти методы очень трудоемки.

Я новичок в PySpark. Если есть более быстрый и лучший подход для этого, пожалуйста, помогите.

Спасибо

Вот так выглядит мой фрейм данных.

+----------+
|Adolescent|
+----------+
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
|       0.0|
+----------+

1 Ответ

1 голос
/ 30 сентября 2019

# 1

Вам придется звонить на .collect() любым способом. Чтобы создать пустой массив из фрейма данных pyspark, вы можете использовать:

adoles = np.array(df.select("Adolescent").collect()) #.reshape(-1) for 1-D array

# 2

Вы можете конвертировать его в фрейм данных pandas, используя toPandas () ,и затем вы можете преобразовать его в массив numpy, используя .values.

pdf = df.toPandas()
adoles = df["Adolescent"].values

Или просто:

adoles = df.select("Adolescent").toPandas().values #.reshape(-1) for 1-D array

# 3

Для распределенных массивов вы можете попробовать Dask Arrays

Я не проверял это, но предполагал, что это будет работать так же, как numpy (могут быть несоответствия):

import dask.array as da
adoles = da.array(df.select("Adolescent").collect()) #.reshape(-1) for 1-D array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...