У меня есть очень большой набор данных df
, который я создал, объединив данные из множества csv
.
Я хочу взять из него случайные строки по 50 тыс.
Для этого я просто сделал
newdf = df.sample(False, 0.1, seed=0).limit(50000)
Когда я запускал newdf.columns
, он отображал все столбцы как обычно.
Но когда я пытался сделать
newdf.count()
, он некоторое время обрабатывался, а затем выдавал Py4jError
в моих jupyter-notebook
и java.lang.OutOfMemoryError: Java heap space
ошибках в терминале.
Он показал то же поведение для некоторых других RDD
действий, таких как
newdf.describe()
newdf.show(n=10)
Я знаю, что проблема с этим определеннымdataframe, потому что то же действие отлично работало для dataframe с меньшими данными в том же коде.
Я подумал, может быть, проблема в том, что df
также есть в памяти, поэтому я попытался удалить его после выполненияПример, выполнив
import gc
del df
gc.collect()
и снова запустив newdf.count()
, но он все равно выдал ту же ошибку.
Я также изменил spark
память драйвера в spark/conf/spark-defaults.conf
на 9g
но это все равно не решило мою проблему.
Я пытался использовать Python 3.6
, а такжеPython 2.7
в моей записной книжке проблема осталась прежней.
spark
версия, которую я использую - 2.4.0
.Когда я запускаю pyspark
в терминале, он говорит, используя Using Python version 3.6.4
.
Подскажите, пожалуйста, как я могу взять 50k строк из этого большого набора данных?Мне все равно, если все остальные строки будут потеряны или удалены.
PS: Сначала я попытался сделать это с pandas
, это не сработало, поэтому я переключился на pyspark
.