2017-11-28 10 views
0

私は、デフォルトでHDFSへの書き込み書き込みをしようとしています。現在、RDDでsaveAsTextFileを呼び出すと、ローカルのファイルシステムに書き込まれます。具体的には、私がこれを行う場合:デフォルトでHDFSに書き込むようにpysparkを設定するにはどうすればよいですか?

rdd = sc.parallelize([1,2,3,4,5]) 
rdd.saveAsTextFile("/tmp/sample") 

これは/ tmp/sampleと呼ばれる私のローカルファイルシステム上のファイルに書き込みます。しかし、私が行う場合

rdd = sc.parallelize([1,2,3,4,5]) 
rdd.saveAsTextFile("hdfs://localhost:9000/tmp/sample") 

それは私のローカルhdfsインスタンス上の適切な場所に保存されます。

設定または

rdd.saveAsTextFile("/tmp/sample") 

は、デフォルトでHDFSに保存されます火花ように初期化する方法はありますか?私は

hdfs getconf -confKey fs.defaultFS 

を実行したときに

は私が

17/11/28 09:47:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
hdfs://localhost:9000 
+0

[チャットでこのディスカッションを続行しましょう](http://chat.stackoverflow.com/rooms/160033/discussion-between-djacobs7-and-desertnaut) – djacobs7

答えて

-1

短い答えを参照してください、以下のコメント投稿に答えるために:なし。 "/ tmp/sample"の構文は、デフォルトでローカルファイルシステムを指しています。 rdd.saveAsTextFile("hdfs://localhost:9000/tmp/sample")を使用しない理由は何ですか?

ただし、パスを変数に格納し、必要に応じてワーカーにブロードキャストできます。

+2

⚠正しくありません。 Sparkは、Hadoop設定を使用してデフォルトFSを決定できます。 [sahil-desai](https://stackoverflow.com/users/6682076/sahil-desai)の[answer](https://stackoverflow.com/a/47525085/6910411)で指摘されています除去された)。 – user6910411

+2

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 18087368) –

2

は最後にこれを考え出した:

  1. 私はSPARK_CONF_DIR
  2. という環境変数を作成しなければならなかった私は、ファイルがこのようなラインを持っていることをspark-env.sh
  3. と呼ばれるそこにファイルを作成しましたexport HADOOP_CONF_DIR="/opt/hadoop-2.9.0/etc/hadoop/"(またはwhereveer Hadoopのが、実際にインストールされている。)これは、ここに文書化されています https://spark.apache.org/docs/latest/configuration.html

"落とし穴" Oを回しそれはHADOOP_CONF_DIRが完全に解決されたパスでなければならないことです。長い間、私は持っていた

export HADOOP_CONF_DIR="~/opt/hadoop-2.9.0/etc/hadoop" 

これは正しく動作していないようです。絶対パスに変更すると問題が解決しました。

1

Sparkを実行する方法はいくつかあります。私の場合、私は2つの異なる方法を使用しています。私はSparkスタンドアロンインストールとClouderaクラスタのSpark on Yarnを持っています。

デフォルトでSparkスタンドアロンに書き込むと、ローカルファイルシステムに書き込まれますが、Spark on Yarn(それは2.xです)ではHDFSがデフォルトの書き込み場所になります。

私はSparkをデフォルトでHDFSに書き込むように設定する方法についての質問に答えていないことを知っていますが、あなたはすでにそれを理解しています。

また、Spark UIとHistory Serverが提供するものを超えて、Clouderaマネージャーのようなたくさんの追加機能が追加されたので、ClouderaクラスターにSparkを導入する利点があると信じています。 、ハイブなど。

関連する問題