問題タブ [partitioner]

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.

0 投票する
2 に答える
2770 参照

hadoop - Hadoopの演算順序

yahooのhadoopチュートリアルにある添付の画像によると、操作の順序は、マップ>結合>パーティションであり、その後にreduceが続く必要があります。

これが、マップ操作によって送信されるキーの例です。

同じタイプのキーが100個あるとすると、これは次のように組み合わせる必要があります。

次に、最初のパイプの前の値でキーを分割したいと思います(|) http://hadoop.apache.org/common/docs/r0.20.2/streaming.html#A+Useful+Partitioner+Class+%28secondary + sort%2C + the + -partitioner + org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner + option%29

これが私のストリーミングコマンドです

これは私が得るエラーです

コンバイナーの前にパーティショナーが実行されているようです。何かご意見は?

0 投票する
3 に答える
867 参照

hadoop - PartitionerクラスのパラメーターnumPartitions

達人!

誰でも答えることができます:Partitionerクラスの定義されたパラメーターnumPartitions(このパラメーターの値)はどこにありますか?

0 投票する
1 に答える
1720 参照

hadoop - すべてのレデューサーへの Hadoop 送信レコード

特定のレコードをすべてのレデューサーに送信するにはどうすればよいですか?

Partitioner クラスとその機能は知っていますが、レコードがすべてのレデューサーに送信されるようにする簡単な方法がわかりません。

基本的に、パーティショナーには次のメソッドがあります。

私の最初のアイデアは、Partitioner と Mapper を次のように連携させることでした: Mapper は reduce タスクの数に等しい回数だけレコードを出力し続け、Partitioner はすべての int (0 から numPartitions-1 まで) を返します。レコードがすべてのパーティションに到達していることを確認してください。

これを解決する他のよりスマートな方法はありますか? たとえば、すべてのパーティションに送信する必要があるレコードに対して -1 を返します。フレームワークは、返された -1 を確認したときにそれを行います。

0 投票する
2 に答える
522 参照

java - Hadoop Map-Reduceで、ソート後、パーティション化する前に、キーのリスト全体を表示するクラスはありますか?

私はHadoopを使用して、データの非常に不均一な分布を分析しています。一部のキーには数千の値がありますが、ほとんどのキーには1つしかありません。たとえば、IPアドレスに関連付けられたネットワークトラフィックには、いくつかの会話型IPに関連付けられた多くのパケットと、ほとんどのIPに関連付けられた少数のパケットが含まれます。別の言い方をすれば、ジニ係数は非常に高いということです。

これを効率的に処理するには、各レデューサーは、ほぼ均等な負荷がかかるように、いくつかの大音量のキーまたは多数の低音量のキーを取得する必要があります。パーティションプロセスを作成している場合、これをどのように行うかを知っています。keysマッパーによって生成された(すべての重複キーを含む)ソートされたリストと、レデューサーの数を取得Nし、

レデューサーは、 forおよびforのようなiキーを取得します。ksplit[i] <= k < split[i+1]0 <= i < N-1split[i] <= ki == N-1

Javaで独自のパーティショナーを作成するつもりですが、Partitioner <KEY、VALUE>クラスは、リスト全体ではなく、一度に1つのKey-Valueレコードにしかアクセスできないようです。Hadoopはマッパーによって生成されたレコードをソートすることを知っているので、このリストはどこかに存在する必要があります。複数のパーティショナーノードに分散されている可能性があります。その場合、サブリストの1つで分割手順を実行し、その結果を他のすべてのパーティショナーノードに何らかの方法で伝達します。(選択したパーティショナーノードにランダム化されたサブセットが表示されると仮定すると、結果はほぼ負荷分散されます。) ソートされたキーのリストが格納されている場所と、それにアクセスする方法を知っている人はいますか?

2つのmap-reduceジョブを作成したくありません。1つは分割を見つけるためのもので、もう1つは実際にそれらを使用するためのものです。(マッパーは同じ仕事を2回行う必要があります。)これは一般的な問題のようです。不均一な分布はかなり一般的です。

0 投票する
1 に答える
2372 参照

hadoop - 出力コレクターはどのように機能しますか?

マッパーまたはレデューサーを定義しないデフォルトのマップ削減ジョブを分析しようとしていました。つまり、IdentityMapperとIdentityReducerを使用するもの明確にするために、IDレデューサーを書きました

私の入力ファイルは次のとおりです。

私は、集計はレデューサーのwhileループでプログラマーによって行われ、その後outputcollectorに書き込まれるという意見でした。outputcollector に渡されるレデューサーのキーは常に一意であるという印象を受けました。ここで集計しないと、最後のキーの値が前の値を上書きするためです。明らかにそうではありません。誰かが出力コレクターのより良いインサイト、それがどのように機能し、どのようにすべてのキーを処理するかを教えてください。Hadoop src コードに outputcollector の多くの実装が見られます。私が期待していることを実行できる独自の outputcollector を作成できますか?

0 投票する
1 に答える
456 参照

hadoop - MapReduceのマップワーカーで中間値を持つパーティション分割されたファイルはどうですか?

MapReduce モデルを理解しようとしていますが、map 関数の中間結果を含むファイルがどのように並べ替えられ分割されているかがわからないため、アドバイスが必要です。MapReduce に関する私の知識のほとんどは、Jeffrey Dean と Sanjay Ghemawat の MapReduce の論文と Hadoop: The Definitive Guide から得たものです。

map 関数の中間結果を含むファイルは、並べ替えられ、分割された小さなファイルの複合体です。これらの小さなファイルは、リデュース ワーカーに対応するパーティションに分割されます。次に、小さなファイルが 1 つのファイルにマージされます。小さなファイルのパーティション分割がどのように行われるかを知る必要があります。最初に、すべてのパーティションにはいくつかの範囲のキーがあると考えました。

例: 範囲 <1;100> の整数としてキーを取得し、ファイルが 3 つのパーティションに分割されている場合、最初のパーティションは範囲 <1,33> のキーを持つ値で構成でき、2 番目のパーティションは範囲 <1,33> のキーを持つ値で構成できます。 34;66> および 3 番目のパーティション <67;100>。同じパーティショニングがマージされたファイルにもあります。

しかし、私はそれについてよくわかりません。すべてのパーティションは、対応する縮小ワーカーに送信されます。この例では、reduce ワーカーが 2 つある場合、最初の 2 つのキー範囲 (<1,33> と <34;66>) を持つパーティションを最初のワーカーに送信し、最後のパーティションを 3 番目のワーカーに送信できます。しかし、私が間違っていて、ファイルが別の方法で分割されている場合 (つまり、パーティションに独自の可能なキーの範囲がないことを意味します)、すべての reduce ワーカーが同じキーの結果を持つことができます。したがって、これらのreduceワーカーの結果を何らかの方法でマージする必要がありますよね? これらの結果をマスター ノードに送信して、そこでマージすることはできますか?

簡単に言うと、map フェーズのファイルがどのように分割されるかを説明し (私の説明が間違っている場合)、reduce worker の結果をどこでどのように処理できるかを説明する必要があります。

私の問題を十分に説明して理解していただければ幸いです。もちろん、もっと説明できます。

ご回答ありがとうございます。

0 投票する
1 に答える
1610 参照

hadoop - Hadoop カスタム パーティショナーの問題

カスタム パーティショナーの「getPartition」メソッドの出力に基づいて、予想されるパーティションにカスタム中間キーが配置されないという問題が発生しています。私のマッパー ログ ファイルで、パーティショナーが予想されるパーティション番号を生成することを確認できますが、共通のパーティション番号を持つキーが同じリデューサーにならないことがあります。

共通の「getPartition」出力を持つキーは、どのようにして異なるレデューサーに到達しますか?

すべての「getPartition」呼び出しが行われた後、マッパー ログ ファイルで、カスタム中間キー「hashCode」および「compareTo」メソッドへの呼び出しが多数行われていることに気付きました。マッパーはパーティションの並べ替えを行っているだけですか、それとも問題の一部である可能性がありますか?

カスタム中間キーとパーティショナーのコードを添付しました。注: キーの正確に 1/2 で「useBothGUIDFlag」が true に設定され、1/2 でこれが false に設定されていることがわかっています (これが、これらのキーをパーティション スペースの半分に分割する理由です)。また、キーがパーティションの残りの半分にクロスオーバーしていないように見えることも知っています (つまり、「useBothGUIDFlag」キーは「!useBothGUIDFlag」パーティションに到達せず、その逆も同様です)。パーティション。

0 投票する
2 に答える
398 参照

hadoop - カスタム パーティショナー エラー

私は独自のカスタム Partitioner(Old Api) を作成しています。以下は、Partitioner クラスを拡張しているコードです。

JobConf の設定:

WordPair クラスには以下が含まれます

プライベート テキスト ネイバー。

質問:
1. 「実際の引数クラス (WordPairPartitioner) は Class (?extends Partitioner) に変換できません」というエラーが表示
されます。

0 投票する
2 に答える
904 参照

hadoop - Hadoop パーティショナー内のカスタム カウンター

カスタム パーティショナー (またはデフォルトの HashPartitioner) 内のキーとその値に関する情報を取得したいと考えています。

「コンテキスト」変数にアクセスすることで、マッパーとリデューサーの両方でカスタム カウンターを使用できます。ただし、Partitioner 内では「context」変数にアクセスできません。

-1- パーティショナーから「コンテキスト」変数へのアクセスを取得する方法はありますか? または -2- パーティショナーにカウンターを追加する方法は?

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

0 投票する
1 に答える
677 参照

cassandra - Cassandraで異なるキースペースが異なるパーティショナーを使用できるようにする方法は?

私は Cassandra を初めて使用し、そのパーティショナーに関する基本的な質問があります。

Cassandra ドキュメントによると、クラスターのパーティショナーは cassandra.yaml ファイルで設定する必要があります。私の質問は、Cassandra クラスター内のすべてのキースペースが同じパーティショナーを使用する必要があるということですか? そうでない場合、異なるキースペースが異なるパーティショナーを使用できるようにする方法は?