0
別のインデックスを照会することに基づいて、大量のテキストファイル内のデータを処理するためにSparkを使用する必要があります。小規模の場合(RDDを配列に変換する/以下を参照)、これを行うことはできますが、大量のデータを扱うためにはそれを正しく設定することが難しいです。RDD内でsc.textFileをネストして使用
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()
を設定しますか?
ありがとうございます!
ちょうど私があなたのユースケースを理解していることを確認するために、ロードしたい何十億という名前のテキストファイルがありますか?また、どのバージョンのSparkを使用していますか? –
私は何十億もの他のファイル名を持つ何十億ものテキストファイル(本質的にインデックス)を持っています。私はSpark 1.6を使用していますが、必要に応じてSpark 2.0に簡単にアップグレードできます。 – Vineet