2017-08-17 15 views
0

2つのワーカーノードと1つのマスターノードを持つSparkスタンドアロンクラスタがあります。Sparkスタンドアロンクラスタはローカルファイルシステム内のファイルを読み取ることができません

spark-shellを使って、私はローカルファイルシステム上のファイルからデータを読み込んだ後、いくつかの変換を行い、最終的なRDDを/ home/outputに保存しました(言います) RDDは正常に保存されました。ワーカーノードとマスターノードで_SUCCESSファイルしか存在しませんでした。

この出力データを/ home/outputから読み取る場合、マスター上で0データを取得しているのでデータが取得されていません。次に、他のワーカーノードをチェックしていないと仮定しています。

Sparkがすべてのワーカーノードから読み取っていない理由や、Sparkがワーカーノードからデータを読み取るために使用するメカニズムが何であるかについて、 HADOOP_CONF_DIR.Thisにデフォルトのポイントによって

scala> sc.textFile("/home/output/") 
res7: org.apache.spark.rdd.RDD[(String, String)] = /home/output/ MapPartitionsRDD[5] at wholeTextFiles at <console>:25 

scala> res7.count 
res8: Long = 0 

答えて

0

SparkContextすなわちSCは、一般的に、あなたがsc.textFile("/home/output/")を言うとき、それはあなたのケースでHDFS上に存在しないhdfs:///home/output、などDIR /ファイルを検索を意味し、hdfs://に設定されています。 file://はローカルファイルシステムを指しています

sc.textFile("file:///home/output")を試してください。そうすれば、Sparkにローカルファイルシステムからの読み取りを明示的に伝えます。

+0

私はそれを試みたが、うまくいかなかった。現状では、マスターには_SUCCESSファイルの出力フォルダーがあり、ワーカーノードには残りのファイルが「出力」フォルダーにあります。 今、私はこの出力フォルダを読んでいるとき、それは私がそれがマスターだけを読んでいると仮定空白を与えています。 –

+0

あなたはあなたが/ home/outputと書いたものを使って、最初のステップを教えてください。 – thinkinbee

0

同じパスと名前を持つすべてのワーカーマシンにファイルを配置する必要があります。

+0

これらのファイルが生成されるたびに、私はこれを行うことができません。 –

+0

または、ファイルをHDFSに置くことができます。 – Robin

関連する問題