有这样的东西吗?任何人都可以对此进行澄清吗?我一直在使用AWK执行简单的任务,例如打印列和合并大型数据文件,但不是用于计算?我在考虑是否可以使用计算机或网络中的所有节点和CPU并行运行AWK。但是如何?使用并行AWK的主要目的是什么?
谢谢您的输入。
发布问题后,我发现Parallel AWK确实存在。您可以找到更多有关它的信息。这是链接http://www.parallel-awk.org/
并行awk实现的问题在于,语义明确假定操作是按顺序处理的。例如:
awk '{print NR, $0}'
提供与cat -n
类似的输出。并行处理此问题的困难在于,NR是已处理的行总数,而不仅仅是给定文件(FNR
)
此外,还有一些更复杂的技巧,涉及诸如getline之类的命令,这些命令无法并行化(例如,可以将脚本短路以模拟gnu nextfile
扩展名]
我在网上看到了许多使用“ cat filename”通过awk并行管道的示例,但是我假设使用NR / FNR这样的awk排序不能像下面这样并行化?
awk'NR == FNR {a [$ 1]; next} $ 2 in {print}'$ PWD / geno.8.2.txt $ PWD / geno.14.1.gen> test.gentemp
我可以通过“ parallel --shellquote”将其转义以转引号,但是我认为它是不可并行化的?我们还在群集上使用了很多Spark,但对于这种排序而言,Spark的速度并不快。也许我们最好使用Hive或Impala?
Tx!