2016-09-26 2 views
0

現在、Hadoopを使って作業していることを知っています。ここにはhdfsでシーケンシャルコードを実行しています

現在の設定があります。私は、マッパーの入力データとして使用する.txtファイルを作成するために使用するシーケンシャルコードを持っています。私は現在、ローカルマシン上でこのシーケンシャルコード "preprocess.py"を実行していて、生成されたファイルをhdfsに移動していますが、生成されるファイルが多数あり、生成には多くの時間が必要です。

"preprocess.py"コードをhdfsにコピーしたのであれば、それを実行して、生成されたファイルを移動を要求する代わりにhdfs上に作成できるかどうかは疑問でした。明らかには動作しませんように

"hdfs dfs -python preprocess.py" 

を使用して

は、 "不明なコマンド" エラーを返します。あなたの時間をありがとう!

答えて

0

可能です。生成されたすべてのファイルをPythonコード内の単一のunix場所にプッシュするようにしてください。それらがそこにあると、subprocessモジュールを使用して、生成されたファイルをHDFSにシフトすることができます。コードでは、ファイルが転送されるまで待たなければなりません。また、同じファイルを再度コピーしないようにするには、HDFSの転送が成功した後でファイルを別々に命名してみてください(Hadoopエラーが発生します)。

+0

これは、ファイルをローカルに書き込んでからHDFSに移動するように聞こえます。この転送を避けるためにHDFSに直接書き込む方法があるかどうか疑問に思っています。 – PhasedAndConfused

+0

はいできます。そのためには、hadoopプラットフォームのエッジノードからPythonプロセスを実行する必要があります。その場合、あなたのpythonジョブは基本的にYARNコンテナの中で実行されます。 YARNコンテナの場合、すべてのHDFSフォルダはローカルフォルダと似ていますので、転送する必要はありません。技術的にはまだローカルではありません。これをローカルでファイルに書き込んだり、完全なファイルを1つに転送する方がHDFS – abhiieor

関連する問題