gpt4 book ai didi

scala - Spark : run an external process in parallel

转载 作者:行者123 更新时间:2023-12-04 19:02:37 25 4
gpt4 key购买 nike

Spark 是否可以“包装”并运行管理其输入和输出的外部进程?

该进程由通常从命令行运行的普通 C/C++ 应用程序表示。它接受一个纯文本文件作为输入并生成另一个纯文本文件作为输出。由于我需要将此应用程序的流程与更大的东西(总是在 Spark 中)集成,我想知道是否有办法做到这一点。

该过程可以轻松并行运行(目前我使用 GNU Parallel),只需将其输入拆分为(例如)10 个部分文件,在其内存中运行 10 个实例,然后将最终的 10 个部分文件输出重新合并为一个文件。

最佳答案

您可以做的最简单的事情是编写一个简单的包装器,它从标准输入中获取数据、写入文件、执行外部程序并将结果输出到标准输出。之后你所要做的就是使用 pipe方法:

rdd.pipe("your_wrapper")

唯一需要认真考虑的是 IO 性能。如果可能,最好调整您要调用的程序,以便它可以直接读取和写入数据,而无需通过磁盘。

或者,您可以使用 mapPartitions结合 process 和标准 IO 工具写入本地文件,调用您的程序并读取输出。

关于scala - Spark : run an external process in parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34092517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com