Talend 分布式文件系统
在本章中,让我们详细了解 Talend 如何与 Hadoop 分布式文件系统配合使用。
设置和先决条件
在我们使用 HDFS 进入 Talend 之前,我们应该了解为此目的应满足的设置和先决条件。
这里我们在虚拟机上运行 Cloudera quickstart 5.10 VM。此 VM 中必须使用 Host-Only 网络。
仅主机网络 IP:192.168.56.101
您还必须在 cloudera manager 上运行相同的主机。
现在在您的 Windows 系统上,转到 c:\Windows\System32\Drivers\etc\hosts 并使用记事本编辑此文件,如下所示。
同样,在您的 cloudera 快速入门虚拟机上,编辑您的/etc/hosts 文件,如下所示。
设置 Hadoop 连接
在存储库面板中,转到元数据。右键单击 Hadoop 集群并创建一个新集群。提供此 Hadoop 集群连接的名称、用途和描述。
点击下一步。
选择发行版为 cloudera 并选择您正在使用的版本。选择检索配置选项,然后单击下一步。
输入管理员凭据(带有端口、用户名、密码的 URI),如下所示,然后单击连接。如果详细信息正确,您将在发现的集群下获得 Cloudera QuickStart。
点击获取。这将获取 HDFS、YARN、HBASE、HIVE 的所有连接和配置。
全选并点击完成。
请注意,所有连接参数都将自动填充。在用户名中提及 cloudera,然后单击完成。
这样,您已成功连接到 Hadoop 集群。
连接到 HDFS
在此作业中,我们将列出 HDFS 上存在的所有目录和文件。
首先,我们将创建一个作业,然后向其中添加 HDFS 组件。右键单击 Job Design 并创建一个新作业 – hadoopjob。
现在从面板中添加 2 个组件——tHDFSConnection 和 tHDFSList。右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接这两个组件。
现在,配置两个 talend hdfs 组件。
在 tHDFSConnection 中,选择 Repository 作为 Property Type,然后选择您之前创建的 Hadoop cloudera 集群。它将自动填充此组件所需的所有必要详细信息。
在 tHDFSList 中,选择"使用现有连接",然后在组件列表中选择您配置的 tHDFSConnection。
在 HDFS Directory 选项中给出 HDFS 的 home 路径,然后点击右侧的浏览按钮。
如果您通过上述配置正确建立了连接,您将看到如下所示的窗口。它将列出 HDFS 主目录中存在的所有目录和文件。
您可以通过在 cloudera 上检查您的 HDFS 来验证这一点。
从 HDFS 读取文件
在本节中,让我们了解如何在 Talend 中从 HDFS 读取文件。您可以为此创建一个新作业,但这里我们使用的是现有作业。
将 3 个组件-tHDFSConnection、tHDFSInput 和 tLogRow 从调色板拖放到设计器窗口。
右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接 tHDFSInput 组件。
右键单击 tHDFSInput 并将主链接拖到 tLogRow。
请注意,tHDFSConnection 将具有与之前类似的配置。在 tHDFSInput 中,选择"使用现有连接",然后从组件列表中选择 tHDFSConnection。
在文件名中,提供您要读取的文件的 HDFS 路径。这里我们正在读取一个简单的文本文件,所以我们的文件类型是文本文件。同样,根据您的输入,填写如下所述的行分隔符、字段分隔符和标题详细信息。最后,单击"编辑架构"按钮。
由于我们的文件只有纯文本,我们只添加了一列字符串类型。现在,点击确定。
注意-当您的输入有多个不同类型的列时,您需要在此处相应地提及架构。
在 tLogRow 组件中,单击编辑架构中的同步列。
选择您希望输出的打印模式。
最后,单击运行以执行作业。
成功读取 HDFS 文件后,您可以看到以下输出。
将文件写入 HDFS
让我们看看如何在 Talend 中从 HDFS 写入文件。将 3 个组件-tHDFSConnection、tFileInputDelimited 和 tHDFSOutput 从调色板拖放到设计器窗口。
右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接 tFileInputDelimited 组件。
右键单击 tFileInputDelimited 并将主链接拖到 tHDFSOutput。
请注意,tHDFSConnection 将具有与之前类似的配置。
现在,在 tFileInputDelimited 中,在 File name/Stream 选项中给出输入文件的路径。这里我们使用 csv 文件作为输入,因此字段分隔符是","。
根据您的输入文件选择页眉、页脚、限制。请注意,这里的标题为 1,因为第 1 行包含列名,而限制为 3,因为我们仅将前 3 行写入 HDFS。
现在,点击编辑架构。
现在,根据我们的输入文件,定义架构。我们的输入文件有 3 列,如下所述。
在 tHDFSOutput 组件中,单击同步列。然后,在使用现有连接中选择 tHDFSConnection。此外,在文件名中,提供您要写入文件的 HDFS 路径。
注意文件类型为文本文件,操作为"创建",行分隔符为"\n",字段分隔符为";"
最后,单击运行以执行您的作业。作业成功执行后,检查您的文件是否在 HDFS 上。
使用您在作业中提到的输出路径运行以下 hdfs 命令。
hdfs dfs-cat /input/talendwrite
如果您在 HDFS 上成功写入,您将看到以下输出。
