問題タブ [mrjob]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python モジュールのインポート エラー「ImportError: mrjob.job という名前のモジュールがありません」
システム: Mac OSX 10.6.5、Python 2.6
以下のpythonスクリプトを実行しようとしています:
次のエラーが表示されます。
私は easy_install を次のように使用していました。
sudo easy_install mrjob
このコマンドは必要な .egg ファイルをダウンロードし、Python の site-packages ディレクトリは次のようになります。
私はPythonに少し慣れていないので、ここで何をすべきかわかりません。どんな助けでも大歓迎です。ありがとうございました!
mongodb - [MRJobを使用して]EMRのノード間で入力データはどのように分散されますか?
私は、YelpのMRJobを使用して、AmazonのElasticMapReduceを使用して計算することを検討しています。計算量の多い作業では、大量のデータを読み書きする必要があります。各ノードはデータの一部のみを取得する必要があり、これがどのように行われるかについて私は混乱しています。現在、私のデータはMongoDBにあり、永続的なEBSドライブに保存されています。
EMRを使用する場合、データはノード上でどのように因数分解されますか?データを分割するキーをMRJobにどのように伝える必要がありますか?MRJob EMRのドキュメントでは、因数分解の手順が暗黙的に残されています。ファイルまたはS3 Key-Valueストアへの接続を開くと、どのようにキーが分割されますか?入力がシーケンスであると想定し、それに基づいて自動的に分割しますか?
おそらく誰かが、 MRJobの単語数の例を使用して、入力データがノードにどのように伝播されるかを説明できます。その例では、入力はテキストファイルです-それはすべてのノードにコピーされますか、それとも1つのノードによってシリアルに読み取られ、分割して配布されますか?
python - 複数のファイル内のすべての行の MapReduce ペアワイズ比較
python のmrjobを使用して、実行時間の長い python プログラムの一部を MapReduce Hadoop ジョブに変換することから始めています。簡単な単語カウントの例が機能するようになり、「テキスト分類」の例を概念的に理解しました。
ただし、問題を解決するために必要な手順を理解するのに少し苦労しています。
複数のファイル (約 6000) があり、それぞれに 2 ~ 800 行あります。この場合、各行はスペースで区切られた単純な「信号」です。各ファイルの各行と、すべてのファイル (それ自体を含む) の他のすべての行との相関関係を比較する必要があります。次に、相関係数に基づいて結果を出力します。
1 つのファイルの例:
このファイルの各行を、他のすべてのファイルのすべての行とペアにする必要があります...または、すべてのファイルを1つのファイルに連結して簡単にすることもできますが、ペアごとの反復が必要です。
計算の方法と、最終的な削減ステップを使用して結果を集計およびフィルタリングする方法を理解しています。私が抱えている問題はyield
、単一の setp ですべてのファイルを読み取らずに、すべてのペアワイズ アイテムを連続するステップに移動する方法です。を使用する入力ファイルを事前に準備できると思いますitertools.product
が、このファイルは非常に大きくなります。
python - Amazon Elastic MapReduce を使用した Numpy と Scipy
mrjob を使用して Amazon の Elastic MapReduce で Python コードを実行すると、EMR イメージの numpy と scipy をアップグレードする方法が見つかりました。
コンソールから実行すると、次のコマンドが機能します。
これにより、最新の numpy と scipy がイメージに正常にブートストラップされ、完全に機能します。私の質問は速度の問題です。これは、小さなインスタンスにインストールするのに 21 分かかります。
numpy と scipy をアップグレードするプロセスをスピードアップする方法を知っている人はいますか?
amazon-web-services - EMRジョブを実行するためのAWSポリシーの最小要件
com.test.mybucket
MRJob Pythonフレームワークを使用して、S3バケットからのデータに対してElasticMapreduceを実行したいと思います。ただし、S3には他にもたくさんのデータがあり、他のEC2インスタンスには触れたくありません。AWSユーザーが完全なジョブを実行するために必要となる可能性のある最小限のアクセスクレデンシャルのセットは何ですか?
python - どうすれば python subprocess.Popen が select.poll を参照し、後で参照できないのですか? (「モジュール」オブジェクトを選択すると、属性「ポーリング」がありません)
Amazon の Elastic Map Reduce で Python プログラムを実行するために、Yelpの (素晴らしい) mrjobライブラリを使用しています。標準の python ライブラリの subprocess に依存します。python2.7.2を実行している私のMacから、すべてが期待どおりに機能します
ただし、Ubuntu LTS 11.04 で python2.7.2 とまったく同じコードを使用するように切り替えたとき、奇妙なことに遭遇しました。
mrjob はジョブをロードし、subprocess を使用してその子プロセスとの通信を試み、次のエラーを生成します。
これは、mrjob ではなくサブプロセスの問題のようです。
/usr/lib/python2.7/subprocess.py を掘り下げたところ、インポート中に次のように実行されることがわかりました。
それを編集して、実際に _has_poll==True が設定されていることを確認しました。これは正しいです。コマンドラインで簡単に確認できます。
しかし、実行が進んで Popen._communicate_with_poll を使用すると、select モジュールが変更されました。これは、select.poll() を使用しようとする直前に dir(select) を印刷することによって生成されます。
「投票」と呼ばれる属性がありません!?!? どうやって消えたの?
そのため、_has_poll=False をハードコードすると、mrjob は喜んで作業を続行し、AWS EMR で自分のジョブを実行し、サブプロセスで communicate_with_select を使用しています...そして手作業で変更された標準ライブラリで立ち往生しています...
何かアドバイス?:-)
python - MRJobによる複数の入力
MapReduce、MRJobにYelpのPythonAPIを使用する方法を学ぼうとしています。彼らの単純な単語カウンターの例は理にかなっていますが、複数の入力を含むアプリケーションをどのように処理するのか興味があります。たとえば、ドキュメント内の単語を単に数えるのではなく、ベクトルに行列を掛けます。私はこの解決策を思いつきました。これは機能しますが、ばかげていると感じます。
このコードが実行./matrix.py < input.txt
され、それが機能する理由は、行列がinput.txtに列ごとに格納され、対応するベクトル値が行の終わりにあるためです。
したがって、次の行列とベクトル:
input.txtとして次のように表されます。
要するに、マトリックスとベクトルをより自然に別々のファイルに保存し、両方をMRJobに渡すにはどうすればよいでしょうか。
python - Hadoop/Dumbo/Mrjob でマップ ジョブに渡されたファイル名を特定する方法はありますか?
全て、
大量のデータを処理するためのインターフェイスの作成と、機械学習を行うための arff ファイルの生成に取り組んでいます。現在、機能を収集できますが、派生元のファイルにそれらを関連付ける方法がありません。今ダンボ使ってる
開かれ、その内容がマッパー関数に渡されたファイル名を特定する便利な方法はありますか?
再度、感謝します。-サム
unix - シェルで mrjob パイピングを使用した Hadoop
mrjob に関する問題があります。1 つの namenode と 1 つの jobtracker を使用して、3 つのデータノードで hadoopcluster を使用しています。気の利いたサンプルアプリケーションから始めて、次のようなものを書きました
これは明らかに stdout に一連の行を書き込んでおり、セカンダリ スクリプトは mrjobs Mapper と Reducer です。私が試したUNIX(GNU)からの呼び出し:
これで作業は完了ですが、入力を hdfs に完全にアップロードしています。すべてがアップロードされたとき、彼は 2 番目のジョブを開始しています。だから私の質問は: ストリームを強制することは可能ですか? (EOF を送信するのと同じように?) それとも、全体が間違っていたのでしょうか?
hadoop - マッパーコードのロジックに応じて、マッパーから別のディレクトリにデータ(行)を書き込みます
私はEMRのニーズにmrjobを使用しています。
マッパーコードのロジックに応じて、マッパーから「個別のディレクトリ」にデータ(行)を書き込むにはどうすればよいですか。
targzipと
ジョブが突然終了/終了した後、(ディレクトリ名に応じて)個別のS3バケットにアップロードしますか?
''オプションでは、最終的なジョブ出力をそのディレクトリにアップロードすることしかできないと思い--output-dir
ますが、マッパーから他のディレクトリにも時々書き込みたいと思います。