【发布时间】:2018-04-30 13:52:36
【问题描述】:
我想基于数百 GB 的数据创建一个预测模型。数据需要一些不密集的预处理,我可以在 pyspark 中进行,但在 tensorflow 中则不行。在我的情况下,直接将预处理的结果传递给 TF 会方便得多,理想情况下,将 pyspark 数据帧视为 TF 的虚拟输入文件,而不是将预处理的数据保存到磁盘。但是,我一点也不知道该怎么做,而且我在互联网上找不到任何地方。
经过一番思考,在我看来,我实际上需要一个迭代器(如 tf.data.Iterator 所定义的)来处理 spark 的数据。但是,我在网上发现 cmets 暗示了 Spark 的分布式结构使其非常困难,如果不是不可能的话。为什么这样?想象一下,我不关心行的顺序,为什么不能遍历 spark 数据?
【问题讨论】:
-
为什么投反对票?
-
一点更新:David Parks 提出的解决方案效果很好,但是整个输入管道在我的机器上非常慢,并且占用了大部分训练时间。一旦我决定对数据进行预处理,然后将结果存储为 tfrecords,我就获得了令人难以置信的加速,比如快了 100 倍。 (当时我没有尝试预取输入数据,我不知道这是否可能。但是,它也可能有助于解决问题。)
标签: python tensorflow pyspark