我有一个巨大的文本文件,我需要分成N个字符的带状疱疹。我没有问题,按顺序方式执行,但是当使用Spark并行化我的代码时,我遇到了困难。
主要的问题是,正如我所理解的那样,DFS将文本分成块并将其推入不同的节点,而w-shinging算法必须将文本作为一系列单词处理,并且算法中肯定会有一个点循环,它必须处理存储在不同节点中的单词。
非并行算法:
StringBuffer msgsb = new StringBuffer("");
int wordsPerShingle = 8;
String words[] = text.split(" ");
int total = words.length - wordsPerShingle + 1;
msgs = new String[total];
for(int i = 0; i < total; i++){
for(int j = i; j < wordsPerShingle + i - 1; j++) {
msgsb.append(words[j]+ " ");
}
msgsb.append(words[wordsPerShingle + i - 1]);
msgs[i] = new String(msgsb);
msgsb = new StringBuffer();
}
return msgs;
问题是:是否可以使用Apache Spark进行处理?