![](/img/trans.png)
[英]how to run sc.textFile() inside a foreach loop and do a union on it?
[英]Nested use of sc.textFile inside an RDD
我需要使用Spark根據查詢另一個索引來處理大量文本文件中的數據。 我可以在較小的情況下執行此操作(通過將RDD轉換為數組/參見下文),但是很難正確設置它以處理大量數據。
我有這個:
val rootPath = "..."
val ndxRDD = sc.textFile(rootPath + "index/2016-09-01*")
def ndxToDoc(articleName: String): String = { sc.textFile(rootPath + articleName).first(); }
// works
val artcilesArr = ndxRDD.collect().map(ndxToDoc);
val articlesRDD = sc.parallelize(articlesArr)
// does not work
// val articlesRDD = ndxRDD.map(ndxToDoc)
articlesRDD.count()
我相信問題是我正在嘗試讀取rdd中的文件。 我如何在沒有中間collect()
- map -> textFile()
- parallelize()
設置的情況下實現上述工作?
提前致謝!
我認為這是完成此類任務的最佳方法。 它是您想要的用例!
您必須將其作為列表收集,否則必須在RDD中創建一個RDD,而這在當前的Spark實現中是不可能的。
有關更多信息,為什么我們不能在RDD中創建RDD,請參見:
因此,這是一種最佳方法,盡管我可以建議您使用OFFHeap內存將大對象存儲在內存中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.