Talend-MapReduce
前の章では、Talendがビッグデータで機能する方法を見てきました。この章では、MapReduceとTalendの使用方法を理解しましょう。
TalendMapReduceジョブの作成
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には2列のwordとwordcountがあります。
tAggregateRowで、Groupbyオプションの出力列としてwordを配置します。操作では、wordcountを出力列として、関数をcountとして、入力列の位置を行として配置します。
次に、tMapコンポーネントをダブルクリックしてマップエディタに入り、入力を必要な出力にマップします。この例では、wordはwordにマップされ、wordcountはwordcountにマップされます。式の列で、[…]をクリックして式ビルダーに入ります。
次に、カテゴリリストとUPCASE関数からStringHandlingを選択します。式を「StringHandling.UPCASE(row3.word)」に編集し、[OK]をクリックします。以下に示すように、row3.wordcountをwordcountに対応する式列に保持します。
tHDFSOutputで、プロパティタイプからリポジトリとして作成したHadoopクラスターに接続します。フィールドが自動入力されることに注意してください。[ファイル名]に、出力を保存する出力パスを指定します。以下に示すように、アクション、行区切り文字、およびフィールド区切り文字を保持します。
MapReduceジョブの実行
構成が正常に完了したら、[実行]をクリックしてMapReduceジョブを実行します。
HDFSパスに移動し、出力を確認します。すべての単語は、単語数とともに大文字になることに注意してください。