Talend 简明教程

Talend - Hadoop Distributed File System

在本章,让我们详细了解 Talend 如何使用 Hadoop 分布式文件系统。

Settings and Pre-requisites

在使用 HDFS 转到 Talend 之前,我们应该了解该目的所应满足的设置和先决条件。

此处我们运行的是虚拟机上 Cloudera Quickstart 5.10 VM。此 VM 必须使用仅主机网络。

仅主机网络 IP:192.168.56.101

pre requisites

您在 Cloudera 管理器上必须运行相同的 host。

cloudera manager

现在在您的 Windows 系统上,转到 c:\Windows\System32\Drivers\etc\hosts,并使用记事本编辑此文件,如下所示。

windows system

同样,在您的 Cloudera Quickstart VM 上,编辑您的 /etc/hosts 文件,如下所示。

sudo gedit /etc/hosts
hosts

Setting Up Hadoop Connection

在存储库窗格中,转到元数据。右键单击 Hadoop 集群,并创建一个新的集群。提供此 Hadoop 集群连接的名称、目的和描述。

单击下一步。

hadoop connection

选择 cloudera 作为发行版,并选择您正在使用的版本。选择检索配置选项,然后单击下一步。

hadoop configuration

输入管理凭证(具有端口、用户名、密码的 URI),如下所示,然后单击连接。如果详细信息正确,您将在已发现集群中获取 Cloudera Quickstart。

manager credentials

单击获取。这会获取 HDFS、YARN、HBase、HIVE 的所有连接和配置。

选择全部,然后单击完成。

click fetch

请注意,所有连接参数都将自动填写。在用户名中提及 cloudera,然后单击完成。

connection parameters

这样,您已成功连接到 Hadoop 集群。

hadoop cluster

Connecting to HDFS

在此任务中,我们将列出 HDFS 上存在的所有目录和文件。

首先,我们将创建一个任务,然后向其中添加 HDFS 组件。右键单击“任务设计”,并创建一个新的任务“hadoopjob”。

现在从“调色板”中添加 2 个组件,分别是 tHDFSConnection 和 tHDFSList。右键单击“tHDFSConnection”,并使用“OnSubJobOk”触发器连接这两个组件。

现在配置两个 talend hdfs 组件。

connecting hdfs

在 tHDFSConnection 中,选择“存储库”作为“属性类型”,并选择之前创建的 Hadoop Cloudera 集群。该组件必需的所有详细信息都将自动填写。

property type

在 tHDFSList 中,选择“使用现有连接”,并在组件列表中选择您配置的 tHDFSConnection。

在“HDFS 目录”选项中提供 HDFS 的主页路径,并单击右侧的浏览按钮。

browse button

如果您已使用上面提到的配置正确建立连接,您将看到如下图所示的窗口。它将列出 HDFS 主页上存在的所有目录和文件。

hdfs browse

您可以在 Cloudera 上检查您的 HDFS 以验证此内容。

checking hdfs

Reading file from HDFS

在本节中,让我们了解如何在 Talend 中从 HDFS 读取文件。您可以为此目的创建一个新任务,但此处我们使用现有任务。

从“调色板”将 3 个组件(tHDFSConnection、tHDFSInput 和 tLogRow)拖放到设计器窗口中。

右键单击“tHDFSConnection”,并使用“OnSubJobOk”触发器连接“tHDFSInput”组件。

右键单击“tHDFSInput”,然后将主链接拖动到“tLogRow”。

reading file

请注意,tHDFSConnection 将拥有与之前类似的配置。在 tHDFSInput 中,选择“使用现有连接”,并从组件列表中选择 tHDFSConnection。

在“文件名”中,提供您要读取的文件的 HDFS 路径。此处我们读取一个简单的文本文件,因此我们的“文件类型”为“文本文件”。同样,根据您的输入,填写行分隔符、字段分隔符和如下所述的头详细信息。最后,单击“编辑模式”按钮。

edit schema button

由于我们的文件仅包含纯文本,因此我们只添加一个类型为 String 的列。现在单击“确定”。

Note - 当您的输入拥有多个不同类型的列时,您需要相应地在此处提及模式。

multiple columns

在 tLogRow 组件中,单击“编辑模式”中的“同步列”。

选择要以其打印输出的模式。

select mode

最后,单击 Run 运行该作业。

成功读取 HDFS 文件后,您会看到以下输出。

successful reading

Writing File to HDFS

让我们看看如何在 Talend 中从 HDFS 中写入一个文件。从面板中将 3 个组件(tHDFSConnection、tFileInputDelimited 和 tHDFSOutput)拖放到设计器窗口。

右键单击 tHDFSConnection,然后使用“OnSubJobOk”触发器连接 tFileInputDelimited 组件。

右键单击 tFileInputDelimited,然后将一个主链接拖到 tHDFSOutput。

main link

请注意,tHDFSConnection 将具有与之前类似的配置。

现在,在 tFileInputDelimited 中,在“File name/Stream”(文件名/流)选项中给出输入文件的路径。此处,我们使用一个 csv 文件作为输入,因此字段分隔符是“,”。

根据输入文件选择页眉、页脚和限制。请注意,此处我们的页眉为 1,因为第 1 行包含列名,限制为 3,因为我们只向 HDFS 中写入前 3 行。

现在,单击编辑模式。

select header

现在,根据输入文件,定义模式。我们的输入文件有以下 3 列。

input file

在 tHDFSOutput 组件中,单击同步列。然后,在“Use an existing connection”(使用现有连接)中选择 tHDFSConnection。此外,在“File name”(文件名)中,给出您要将文件写入其中的 HDFS 路径。

请注意,文件类型将为纯文本文件,操作将为“create”,行分隔符将为“\n”,字段分隔符为“;”

row separator

最后,单击 Run 运行作业。作业成功执行后,检查您的文件是否位于 HDFS 中。

executed successfully

使用作业中提到的输出路径运行以下 hdfs 命令。

hdfs dfs -cat /input/talendwrite

如果成功写入 HDFS,您将看到以下输出。

writing successful