我有一个具有相同格式的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文件。
答案 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';