2017-02-27 3 views
0

に失敗し、私はマスターホスト上スパークのルートディレクトリの下にこれらのコードを実行します。実行スパークマシンが

MASTER=yarn ./bin/run-example ml.LogisticRegressionExample \ data/mllib/sample_libsvm_data.txt

実際に私は、Sparkのからこれらのコードを取得README、そしてここでGitHubの上LogisticRegressionExampleについてのソースコードは次のとおりです。https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionExample.scala

その後、エラーが発生します。

Exception in thread "main" org.apache.spark.sql.AnalysisException: Path does not exist: hdfs://master:9000/user/root/data/mllib/sample_libsvm_data.txt;

まず、私はなぜそれがhdfs://master:9000/user/rootであるのか分かりません。ネームノードのIPアドレスをhdfs://master:9000に設定しましたが、なぜ火花が/user/rootを選択しましたか?

次に、クラスタのすべてのホストにディレクトリ/user/root/data/mllib/sample_libsvm_data.txtを作成します。このファイルが見つかることを願っています。しかし、同じエラーが再び発生します。それを修正する方法を教えてください。

答えて

0

Sparkは、通常のLinuxファイルシステムではなくHDFS上でファイルを探しています。あなたのデータに与えたパス(data/mllib/sample_libsvm_data.txt)は相対パスです。 HDFSでは、相対パスはホームディレクトリ内で開始されるものとみなされます。

githubのLogRegExample.scalaは、糸の実行ではなくローカル実行を想定しています。糸の実行を実行するには、ファイルをHDFSにアップロードする必要があります。

+0

@ JamCon.Yes、それが動作します。私は 'hdfs dfs -put'を使ってデータファイルを' run-example'より先にHDFS上に置くことができます。私が 'spark-submit'を使ってpythonスクリプトを提出すると、私は' --files'を使って自分のデータファイルをアップロードしますが、アップロードされたファイルのパスをHDFS上でどのように指定できますか?投稿されたスクリプトの実行時間にはアップロード時間が含まれますか? – YunjieJi