簡體   English   中英

在RDD中嵌套使用sc.textFile

[英]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,請參見:

  1. Spark-Google-Group討論

  2. 火花嵌套RDD

因此,這是一種最佳方法,盡管我可以建議您使用OFFHeap內存將大對象存儲在內存中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM