我在问这个关于Ngrams的问题。关于文件和并行处理以及为ngrams顺序处理数据的需要。
如果我忘记了一个物理文件拆分,并忘记了nmap的mapPartions处理,这显然会遗漏一些ngrams,那么,如果我在本地处理一个小文件的Ngram,我注意到我总是按顺序获取ngrams的文件,内部文件。这让我感到困惑,而不是对并行对象没有实际约束的求和,理想情况下就是这样的考虑。
对其应用了sc.parallelize(fn,n)的文件,其中包含i< = n partititions包含数据,需要知道下一个连续分区的下一个单词以获得明显的resons。现在,据说SPARK并行工作,那么是什么保证了我在小文件上看到的效果呢?我从文档中看不到。是不是flatmap总是按顺序返回数据,或文件大小,map的用法?
这可能是一个非常基本的问题。提前谢谢。
PS:我假设基于通配符sc.wholeTexTFiles的foreach文件处理并行发生。请不要告诉我不是这样。我在这看到了一些不同的意见。
答案 0 :(得分:0)
我们使用滑动来表示ngram。
然后,来自Hortonworks:
sliding()跟踪分区索引,在这种情况下对应于unigrams的排序。
Compare rdd.mapPartitionsWithIndex { (i, p) => p.map { e => (i, e) } }.collect() and rdd.sliding(2).mapPartitionsWithIndex { (i, p) => p.map { e => (i, e) } }.collect() to help with the intuition.