То, что я пытаюсь сделать, - это «перепробовать» небольшой CSV-файл со столбцом значения веса в каждой строке.
Age|City|Weight
20 | NY |2
30 | SF |3
до
Age|City|
20 | NY |
20 | NY |
30 | SF |
30 | SF |
30 | SF |
С пандой и нп я это сделал
df = pd.read_csv('file.csv',low_memory=False)
weights=round(df.weight)
df.loc[np.repeat(df.index.values,weights)]
Но это слишком медленно, он использует 100% 1 ЦП (из 15 доступных) и всю память 65 ГБ в течение более 24 часов и, наконец, дает сбой.
Финальный файл должен содержать более 70 миллионов строк.
Так что я попробую с Spark.
rdd.map(lamba x: rdd.udf())
или что-то подобное в сочетании с explode()
должно помочь, но я не понимаю, как сделать это правильно.
В конце мне нужно сохранить DataFrame или RDD в одном CSV, не разделенном на разделы: CSV, который я могу использовать обратно с Panda.
Спасибо!