Talend 简明教程

Talend - Map Reduce

在上一章中,我们了解到 Talend 如何与大数据配合使用。在本章中,让我们了解如何将 Map Reduce 与 Talend 一起使用。

Creating a Talend MapReduce Job

让我们学习如何在 Talend 中运行 MapReduce 作业。在这里,我们将运行一个 MapReduce 字词计数示例。

为此,右键单击“作业设计”并创建一个新作业 – MapreduceJob。填写作业详细信息并单击“完成”。

map reduce job

Adding Components to MapReduce Job

要向 MapReduce 作业添加组件,请将 Talend 的五种组件从托盘拖放到设计器窗口 – tHDFSInput、tNormalize、tAggregateRow、tMap、tOutput。右键单击 tHDFSInput 并创建到 tNormalize 的主链接。

右键单击 tNormalize 并创建到 tAggregateRow 的主链接。然后,右键单击 tAggregateRow 并创建到 tMap 的主链接。现在,右键单击 tMap 并创建到 tHDFSOutput 的主链接。

adding components map reduce

Configuring Components and Transformations

在 tHDFSInput 中,选择发行版 Cloudera 及其版本。请注意,NameNode URI 应为“hdfs://quickstart.cloudera:8020”,用户名应为“cloudera”。在文件名选项中,向 MapReduce 作业提供您的输入文件的路径。请确保此输入文件存在于 HDFS 上。

现在,根据您的输入文件选择文件类型、行分隔符、文件分隔符和标题。

transformations

单击编辑架构并添加类型为字符串的字段“line”。

string type

在 tNormalize 中,要规范化的列为行,项目分隔符为空白 →“”。现在,单击编辑架构。tNormalize 将有行列,tAggregateRow 将有 2 列字词和字词计数,如下所示。

normalize
aggregate row

在 tAggregateRow 中,将字词作为输出列放置在“按分组”选项中。在操作中,将字词计数作为输出列,函数作为计数,输入列位置作为行。

word count

现在,双击 tMap 组件以进入映射编辑器并将输入与所需输出进行映射。在此示例中,字词映射到字词,字词计数映射到字词计数。在表达式列中,单击 […] 进入表达式生成器。

现在,从类别列表中选择 StringHandling 和 UPCASE 函数。将表达式编辑为“StringHandling.UPCASE(row3.word)”并单击“确定”。如以下所示,在对应于字词计数的表达式列中保留 row3.wordcount。

string handling

在 tHDFSOutput 中,使用存储库类型连接到我们从属性类型创建的 Hadoop 群集。请注意,字段将自动填充。在文件名中,指定您希望在其中存储输出的输出路径。保持操作、行分隔符和字段分隔符,如下所示。

field separator

Executing the MapReduce Job

一旦您的配置成功完成,请单击运行并执行您的 MapReduce 作业。

configuration success

前往您的 HDFS 路径并查看输出。请注意,所有单词都将以大写字母显示,并附带其词频。

hdfs path