2014-05-13 27 views
0

我一直用这个加载一个文本文件如何使用加载命令在猪的文件夹中加载多个文本文件?

A = LOAD '1try.txt' USING PigStorage(' ') as (c1:chararray,c2:chararray,c3:chararray,c4:chararray); 
+0

可能重复的[猪拉丁:从时间范围加载多个文件(目录结构的一部分)](http://stackoverflow.com/questions/3515481/pig-latin-load-multiple-files-from-a-date-range-part-of-the-directory-structur) –

回答

4

您可以使用文件夹名称,而不是文件名,如:

A = LOAD 'myfolder' USING PigStorage(' ') 
    AS (c1:chararray,c2:chararray,c3:chararray,c4:chararray); 

猪将加载在指定的文件夹中的所有文件,在Programming Pig中说明:

当指定从HDFS读取的“文件”时,可以指定目录。在这种情况下,Pig会在您指定的目录下找到所有文件,并将它们用作该加载语句的输入。因此,如果您的目录输入中有两个数据文件,其中包含今天和昨天的数据文件,并且您将输入指定为要加载的文件,Pig会将今天和昨天都读为输入。如果您指定的目录具有其他目录,那么这些目录中的文件也将包含在内。

+0

谢谢AndreyS。我曾尝试过,但仍然收到错误,说没有从目标目录读取数据。有什么建议吗? – user3627159

+0

它适合我。可能是,你使用错误的路径来目标目录?你在本地还是MapReduce模式下使用Pig? –

+0

我正在使用Pig mapreduce模式,并通过我想知道何时指定目录我应该指定这个“/ user/asiapac/ssamykannu/user/asiapac/ssamykannu”或“hdfs:// localhost:9100/user /亚太/ ssamykannu /用户/亚太/ ssamykannu”。我有三个文本文件存储在文件夹“ssamykannu” – user3627159

1

这里是链接到官方猪文件即表明您可以使用load语句加载一个目录中的所有文件: http://pig.apache.org/docs/r0.14.0/basic.html#load

语法:LOAD“数据” [使用功能] [AS模式];

其中:'data':文件或目录的名称,用单引号括起来。如果您指定目录名称,则会加载目录中的所有文件。

+0

你好如果目录有很多子目录,每个子目录有多个文件,语法是否会加载所有文件? – Jeremiah

0
data = load '/FOLDER/PATH' using PigStorage(' ') AS (<name> <type>, ..); 

OR

data = load '/FOLDER/PATH' using HBaseStorage();