Talend-map-reduce
Talend-マップリデュース
前の章で、ビッグデータでTalendがどのように機能するかを見てきました。 この章では、map ReduceをTalendで使用する方法を理解しましょう。
Talend MapReduceジョブの作成
TalendでMapReduceジョブを実行する方法を学びましょう。 ここでは、MapReduceの単語カウントの例を実行します。
この目的のために、[ジョブデザイン]を右クリックして、新しいジョブMapreduceJobを作成します。 ジョブの詳細に言及して、[完了]をクリックします。
MapReduceジョブへのコンポーネントの追加
コンポーネントをMapReduceジョブに追加するには、Talendの5つのコンポーネント、tHDFSInput、tNormalize、tAggregateRow、tMap、tOutputをパレットからデザイナーウィンドウにドラッグアンドドロップします。 tHDFSInputを右クリックして、tNormalizeへのメインリンクを作成します。
tNormalizeを右クリックして、tAggregateRowへのメインリンクを作成します。 次に、tAggregateRowを右クリックして、tMapへのメインリンクを作成します。 次に、tMapを右クリックして、tHDFSOutputへのメインリンクを作成します。
コンポーネントと変換の構成
tHDFSInputで、ディストリビューションclouderaとそのバージョンを選択します。 Namenode URIは「hdfs://quickstart.cloudera:8020」であり、ユーザー名は「cloudera」であることに注意してください。 ファイル名オプションで、MapReduceジョブへの入力ファイルのパスを指定します。 この入力ファイルがHDFSに存在することを確認してください。
次に、入力ファイルに応じて、ファイルタイプ、行区切り文字、ファイル区切り文字、ヘッダーを選択します。
[スキーマの編集]をクリックし、フィールド「行」を文字列タイプとして追加します。
tNomalizeでは、正規化する列は行になり、アイテムセパレータは空白→““になります。 次に、[スキーマの編集]をクリックします。 以下に示すように、tNormalizeには行列があり、tAggregateRowにはwordとwordcountの2つの列があります。
tAggregateRowで、グループ化オプションに出力列としてwordを配置します。 操作では、wordcountを出力列として、functionをcountとして、入力列の位置を行として入力します。
tMapコンポーネントをダブルクリックしてマップエディターに入り、入力を必要な出力にマップします。 この例では、wordはwordにマップされ、wordcountはwordcountにマップされます。 式の列で、[…]をクリックして式ビルダーを入力します。
ここで、カテゴリリストとUPCASE関数からStringHandlingを選択します。 式を「StringHandling.UPCASE(row3.word)」に編集して、「OK」をクリックします。 以下に示すように、wordcountに対応する式列にrow3.wordcountを保持します。
tHDFSOutputで、プロパティタイプからリポジトリとして作成したHadoopクラスターに接続します。 フィールドが自動入力されることを確認します。 [ファイル名]で、出力を保存する出力パスを指定します。 以下に示すように、アクション、行セパレーター、およびフィールドセパレーターを保持します。
MapReduceジョブの実行
構成が正常に完了したら、[実行]をクリックしてMapReduceジョブを実行します。
HDFSパスに移動して、出力を確認します。 すべての単語は単語カウントとともに大文字になります。