如何使用Dask在多个阶段处理文件(或多个文件)

时间:2016-09-16 09:01:31

标签: python dask

我正在处理内存中的大型文本文件,分3个阶段(目前未使用pandas / dataframes

这需要一个原始数据文本文件并分四个阶段进行处理。

  • 第1阶段处理raw.txt并启动stage1.txt

  • 第2阶段流程stage1.txt并启动stage2.txt

  • 第3阶段流程stage2.txt并启动results.txt

如何设置Dask脚本以在本地处理此问题? 除此之外,您如何将其设置为与raw.txt的多个一起使用。 (即raw1,raw2,raw3)

目前,每个阶段方法都没有返回任何内容,只是将下一个文件写入下一个方法知道的特定文件位置。

def stage_1():
    outputFile=r"C:\Data\Processed\stage_1.txt"

    inputFile=r"C:\Data\RawData\rawData.txt"

    f1 = open(outputFile,"w+")
    f2 = open(inputFile,'r')

    #Process input file f2
    #Write results to f1

    f2.close()
    f1.close()

if __name__ == "__main__":
    stage_1()
    stage_2()
    stage_3()

1 个答案:

答案 0 :(得分:1)

我怀疑你会遇到一些问题。

功能纯度

Dask通常假定函数是pure而不是依赖于副作用。如果你想使用Dask,我建议你改变你的功能,使它们返回数据而不是生成文件。

作为一种hacky解决方法,您可以在函数之间传递文件名。

无并行

您描述的工作流程没有内在的并行性。你可以让dask运行你的函数,但它会一个接一个地运行它们。你需要考虑如何打破你的计算,以便有几个函数调用可以并行运行。 Dask不会为你做这个想法。