【发布时间】:2018-04-27 15:10:11
【问题描述】:
我想要做的是“过度采样”一个小的 csv 文件,每行中都有一个权重值列。
Age|City|Weight
20 | NY |2
30 | SF |3
到
Age|City|
20 | NY |
20 | NY |
30 | SF |
30 | SF |
30 | SF |
通过 panda 和 np 我做到了
df = pd.read_csv('file.csv',low_memory=False)
weights=round(df.weight)
df.loc[np.repeat(df.index.values,weights)]
但是它太慢了,它在超过 24 小时内使用 100% 的 1 个 CPU(15 个可用)和所有 65G 内存,最后崩溃。 最终文件应包含超过 7000 万行。
所以我尝试使用 Spark。
rdd.map(lamba x: rdd.udf()) 或类似的东西,结合explode() 应该会有所帮助,但我不明白如何使它正确。
最后,我需要将 DataFrame 或 RDD 保存在一个未分区的 CSV 中:一个我可以与 panda 一起使用的 csv。
谢谢!
【问题讨论】:
标签: apache-spark dataframe rdd