Talend 在 HDFS 中写入和读取数据


在本教程中,您将学习如何生成随机数据并将它们写入HDFS中;还将学习从HDFS中读取数据,并对它们进行排序,最后在控制台中输出排序结果。

本教程使用Talend Data Fabric Studio v6和Hadoop集群:Cloudera CDH v5.4。

1 创建一个新的标准作业

1)选择集成透视图

2)展开Hadoop集群,确保您已在项目存储库中创建了Hadoop集群连接HDFS连接元数据

3)在Repository中,展开JobDesigns,右键点击Standard,然后单击CreateStandardJob。在新建作业的向导窗口中,将“名称”字段重命名为ReadWriteHDFS。在“用途”字段的HDFS中输入读取/写入数据,在“描述”字段中,输入标准作业以在HDFS中写入和读取客户数据,然后单击完成。然后在作业设计器中打开作业。

4)添加并配置tRowGenerator组件。

5)生成随机客户数据:在作业设计器中添加tRowGenerator

6)双击tRowGenerator_1,为tRowGenerator组件设置架构和函数参数。

7)将列添加到模式中:单击三次[+]图标,并输入列的名称CustomerIDFirstNameLastName

8)给7)中的字段配置属性:单击Type字段更改CustomerID列的Type。单击Integer,将三列的Functions字段分别设置为random(int,int)TalendDataGenerator.getFirstName()TalendDataGenerator.getLastName()

9)在表中,选择CustomerID列,然后在Functionsparameters选项卡中,将最大值设置为1000

10)在RowGenerator的行字段中,输入1000,然后点击确定保存配置。

2 将数据写入HDFS

这一步中,您需要新建一个tHDFSOutput组件,该组件将复用项目存储库中现有的HDFS元数据。

1)从存储库中,在Metadata>HadoopCluster>MyHadoopCluster>HDFS下,单击MyHadoopCluster_HDFS并将其拖动到作业设计器

2)在组件列表中,选择tHDFSOutput并点击确定。

3)通过将两个组件与Main行进行链接,创建从tRowGenerator_1组件到MyHadoopCluster_HDFS组件的数据流,然后双击MyHadoopCluster_HDFS组件打开Component视图。

注意,该组件已经配置了预定义的HDFS元数据连接信息

4)在文件名框中,输入相对应的路径信息(本教程中为“/user/student/CustomersData”),然后在操作列表中,选择覆盖(Overwrite)

将数据写入HDFS的第一个子作业现已完成。它会获取之前创建的tRowGenerator中生成的数据,并使用使用元数据定义的连接将其写入HDFS

3 从HDFS读取数据

接下来,您需要新建一个子作业来读取HDFS上的客户数据,并对其进行排序,最后在控制台中进行输出。

首先,您需要新建tHDFSInput组件,该组件复用了ProjectRepository中现有的HDFS元数据

1)在元数据>HadoopCluster>MyHadoopCluster>HDFS下,点击MyHadoopCluster_HDFS并将其放置在作业设计器。

2)在组件列表中,选择tHDFSInput并单击确定。

3)双击MyHadoopCluster_HDFS输入组件,打开MyHadoopCluster_HDFS输入组件的组件视图。

注意,该组件已经配置了预定义HDFS元数据连接信息。

4)在文件名框中,输入相对应的路径信息(本教程中为“/user/student/CustomersData”)。

4 指定MyHadoopCluster_HDFS输入组件的模式

1)打开架构编辑器:在MyHadoopCluster_HDFS输入组件的组件视图中,单击编辑模式

2)将列添加到模式中:点击三次[+],并输入列名称CustomerIDFirstNameLastName

3)更改CustomerID列的类型:单击“类型字段并点击整数

注意:此模式与tRowGenerator和tHDFSOutput中的模式相同。您可以从这些组件中的任意一个进行复制并粘贴到此模式中。

4)用OnSubjobOk触发器连接tRowGenerator组件和MyHadoopCluster_HDFS输入组件。

5 对数据进行排序

1)添加一个tSortRow组件并使用Main将其连接到MyHadoopCluster_HDFS输入组件。

2)双击该组件打开tSortRow的组件视图。

3)单击同步列配置模式。

4)向Criteria表中添加新条件:点击[+]图标并在模式列中键入CustomerID。选择按“num”进行排序,并在Orderasc/desc中,选择asc,即按数字字符进行升序排序。

6 输出排序后的数据

1)添加一个tLogRow组件并使用Main将其连接到tSortRow组件。

2)双击tLogRow组件打开组件视图。

3)在“模式”面板中,选择“表格”。

现在可以运行您的作业了。

首先,它将生成数据并将写入HDFS。然后,它从HDFS读取数据,对其进行排序,并将其显示在控制台中。

7 运行作业,在控制台中查看结果

1)在运行视图中点击运行。

2)排序后的数据将显示在控制台中。