使用PigLatin(Hadoop)加载多个文件

时间:2013-08-16 15:59:37

标签: hadoop apache-pig

我有一个具有相同格式的csv文件的hdfs文件列表。我需要能够和猪一起LOAD。例如:

/path/to/files/2013/01-01/qwe123.csv
/path/to/files/2013/01-01/asd123.csv
/path/to/files/2013/01-01/zxc321.csv
/path/to/files/2013/01-02/ert435.csv
/path/to/files/2013/01-02/fgh987.csv
/path/to/files/2013/01-03/vbn764.csv

他们不能被称为“随机”哈希,他们的目录可能包含更多csv文件。

2 个答案:

答案 0 :(得分:1)

您不仅限于全球化。使用此:

LOAD '/path/to/files/2013/01-{01/qwe123,01/asd123,01/zxc321,02/ert435,02/fgh987,03/vbn764}.csv';

答案 1 :(得分:1)

正如其他评论中所建议的那样,您可以通过预处理文件来完成此操作。假设您的HDFS文件名为file_list.txt,那么您可以执行以下操作:

pig -param flist=`hdfs dfs -cat file_list.txt | awk 'BEGIN{ORS="";}{if (NR == 1) print; else print ","$0;}'` script.pig

awk代码删除换行符并使用逗号分隔文件名。

在您的脚本中(在我的示例中称为script.pig),您应该使用参数替换来加载数据:

data = LOAD '$flist';