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

How to use Dask to process a file (or files) in multiple stages

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

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

我应该如何设置 Dask 脚本以在本地处理此问题? 除此之外,您如何设置它以使用 raw.txt 的倍数。 (即 raw1、raw2、raw3)

目前,每个阶段方法 return 除了将下一个文件写入下一个方法知道的特定文件位置外,什么都不做。

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()

我怀疑您会 运行 遇到一些问题。

函数纯度

Dask 通常假设函数是 pure 而不是依赖于副作用。如果你想使用 Dask,那么我建议你更改你的函数,以便它们 return 数据而不是生成文件。

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

无并行

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