2011-01-29 8 views
1

私たちはマザーにファイル群を読み込む必要があるので、非Hadoop環境の 環境では、それぞれとfile=open(path, mode)を使用して、それぞれのファイルを で読み込みます。私はHadoopStreamingが ファイル出力する減速機のマッパーとCONVER標準出力の標準入力に ファイル入力を変換することを読んでSTDINまたはファイルをHadoop環境のマッパー入力として使用しますか?

しかし、Hadoopの環境では、私は約いくつかの質問を持っているかへの入力ファイル:

  1. は、私たちがmapper.pyでSTDINからの入力を設定し、 HadoopStreamingがSTDINにHDFS入力ディレクトリ内のファイルを変換できるようにする必要がありますか?

  2. 各ファイルを別々に読み込み、各行を解析する場合、 はmapper.pyのファイルから入力をどのように設定できますか?

非Hadoopの環境セットのための私の以前のPythonコード:しかしos.walkのルート、dirsに、ファイル( '非HDFSのパス') ため .....

、 Hadoop環境では、 'non-hdfsのパス'を に変更する必要があります。ここでは、私はcopyFromLocalにHDFSのパスを設定します。 などのように成功しました。os.walk('/user/hadoop/in')などが成功しました。これは、 Hadoop DFS -ls、およびos.walk('home/hadoop/files') - この は非Hadoopの環境での私のローカルパスである、とさえos.walk('hdfs:// host:fs_port/user/hadoop/in') .. ..

ファイル の操作をmapper.pyで入力することができますか、またはSTDINから入力する必要があるかどうかは誰でも教えてください。

ありがとうございました。

答えて

1

のHadoopストリーミングはSTDINからの入力を取るためにを持っています。私は、Hadoop Streamingがあなたのためにやっていることのいくつかを行うためのコードを書こうとしているという混乱があると思います。私が最初にHadoopingを始めたとき、私はそれをしました。

のHadoopストリーミングは、それは、あなたのマッパーのSTDINに、一度に1行を解析し、複数のファイル、さらには複数のZIPファイルを読み込むことができます

。これは、ファイル名/場所に依存しないようにマッパーを記述するため、有益な抽象化です。後で簡単に入力できるように、マッパーとレデューサーを使用することができます。さらに、後で使用するマッパーの数を知る方法がないため、マッパーがファイルを取得しようとしないようにすることもできます。ファイルがマッパーにコード化されていると、マッパーが1つ失敗した場合、そのマッパーでコード化されたファイルからは出力が得られません。だから、Hadoopはファイル管理を行い、コードは可能な限り一般的なものにしましょう。

+0

こんにちは@JDロングは、私は、HDFSディレクトリに、私はディレクトリからすべてのCSVファイルを読み込みたい多くのCSVファイルを持って、私はこれを行うことができ、どのように提案することができます。私は何をすべきか混乱させています。ディレクトリからローカルに読み込んだcsvファイルのテスト用のスクリプトを作成しました。私はサーバー上で実行する場合、それは入力ストリーミングで動作し、私はファイルを読み込むために例外を取得しています(ストリーミングコマンドが失敗しました)。私はhadoop用のpythonで新しいので、私は行う方法を知らない。どうすればいいですかお勧めします。 – MegaBytes

+0

何を試しましたか?これを見てから、何かをハックしようとする。あなたがスラッグを打つならば、StackOverflowの質問にそれを形成してください。 http://blog.cloudera.com/blog/2013/01/a-guide-to-python-frameworks-for-hadoop/:次にプロセスを繰り返し –

関連する問題