PigStorage 函数
Pig-Latin PigStorage()函数加载和存储数据的结构化文本文件。它使用一个定界符,使用该定界符可以将元组的每个实体作为参数分开。默认情况下,它使用“\t”作为参数。
句法
下面给出的是PigStorage()函数的语法。
grunt> PigStorage(field_delimiter)
例子
让我们假设我们有一个文件名为student_data.txt在名为HDFS的目录/pig_data/具有以下内容。
001,Rajiv,Reddy,9848022337,Hyderabad
002,siddarth,Battacharya,9848022338,Kolkata
003,Rajesh,Khanna,9848022339,Delhi
004,Preethi,Agarwal,9848022330,Pune
005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
006,Archana,Mishra,9848022335,Chennai.
我们已经将该文件加载到Pig中,关系名称为Student_details,如下所示。
grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' USING PigStorage(',')
as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
在上面的示例中,我们看到我们使用了逗号(',')分隔符。因此,我们使用(,)分隔了记录的值。以相同的方式,我们可以使用PigStorage()函数将数据存储到HDFS目录中,如下所示。
grunt> STORE student INTO ' hdfs://localhost:9000/pig_Output/ ' USING PigStorage (',');
这会将数据存储到给定目录中。您可以如下所示验证数据。
验证
您可以如下所示验证存储的数据。首先,使用ls命令列出名为Pig_output的目录中的文件,如下所示。
$ hdfs dfs -ls 'hdfs://localhost:9000/pig_Output/'
Found 2 items
rw-r--r- 1 Hadoop supergroup 0 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/_SUCCESS
rw-r--r- 1 Hadoop supergroup 224 2015-10-05 13:03 hdfs://localhost:9000/pig_Output/part-m-00000
您可以观察到在执行Store语句后创建了两个文件。然后,使用cat命令,列出名为part-m-00000的文件的内容,如下所示。
$ hdfs dfs -cat 'hdfs://localhost:9000/pig_Output/part-m-00000'
1,Rajiv,Reddy,9848022337,Hyderabad
2,siddarth,Battacharya,9848022338,Kolkata
3,Rajesh,Khanna,9848022339,Delhi
4,Preethi,Agarwal,9848022330,Pune
5,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
6,Archana,Mishra,9848022335,Chennai