1

我有很多 CSV 文件,都带有标题行。这些文件看起来都很相似

name, gender, preference, ....
peter, m, soap, ...
paul, m, gel, ...
mary, f, soap, ...
.
.
.

但是列位置和确切的标题名称可能会有些不同,例如。另一个文件可能如下所示:

"the preferences", "the name", "the gender",....
soap, peter, m, ...
gel, paul, m, ...
soap, mary, f, ...
.
.
.

我只想输出/存储标题包含单词“ name”的列。这个专栏的定位我事先不知道,因为每个文件可以不一样。

因此,我需要将每个文件中的与其标题名称相关联。我可以在 Pig 中执行此操作吗?

我虽然使用了两个FILTER运算符(一个用于标题,一个用于数据),但是否不必读取两次数据?

4

1 回答 1

0

在流式传输或存储功能中执行此操作可能会更容易。

请参阅 CSVExcelStorage 和 SKIP_INPUT_HEADER 的实现 - http://svn.apache.org/repos/asf/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/CSVExcelStorage。爪哇

您可以读取文件的标题,找到“名称”字段的位置,然后只为文件中的所有其他记录返回该位置的字段。

您应该确保每个拆分都是一个文件,因为如果在任务之间拆分文件,则处理文件中不包含标题的部分的任务将无法检测到“名称”字段。

于 2013-08-06T08:39:02.293 回答