Hadoop を使用して MYSQL のような RDBMS に接続する場合、通常、DB から DBWritable および Writable を拡張するユーザー定義クラスにレコードを取得します。SQL クエリが N 個のレコードを出力として生成する場合、レコードをユーザー定義クラスに読み込む操作は N 回行われます。毎回 1 レコードではなく、より多くのレコードを同時にマッパーに入れる方法はありますか?
質問する
127 次
1 に答える
1
私の理解が正しければ、Hadoop が内部で NSELECT
ステートメントを引き起こすと考えているでしょう。そうではありません。DBInputFormat
の sourceでわかるように、Hadoop が適合すると判断したものに基づいて行のチャンクを作成します。
明らかに、各マッパーはクエリを実行して処理するデータを取得する必要があり、繰り返し実行する可能性がありますが、それでもテーブルの行数にはほど遠いです。
ただし、パフォーマンスが低下する場合は、データを HDFS / Hive にダンプして、そこから処理する方がよい場合があります。
于 2013-04-01T17:57:26.840 に答える