如何使用PIG将数据从本地系统加载到hdfs

时间:2015-03-05 17:23:50

标签: hadoop apache-pig hdfs

我有一个csv文件sample.csv,位于\home\hadoop\Desktop\script\sample.csv。 我尝试使用

加载PIG
movies = load '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id,name,year,rating,duration);

但是这个PIG语句给出了一个错误,但是当声明为dump movies;时,它会抛出错误并显示输入和输出失败。

请建议我如何使用pig声明加载数据。

3 个答案:

答案 0 :(得分:2)

如果您的输入文件位于本地,那么您可以输入pig -x local

进入grunt shell

如果您输入grunt shell,则可以键入以下语句

 record = LOAD  '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:int); 


dump record;

如果输入文件不在本地,那么首先需要使用以下命令将该文件从本地复制到HDFS

hadoop dfs -put <path of file at local>  <path of hdfs dir>

将文件加载到HDFS后,您可以输入pig

进入map reduce模式

再次打开grunt shell。假设您的HDFS位置类似于下面的LOAD语句

record = LOAD  '/user/hadoop/inputfiles/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:int); 


dump record;

答案 1 :(得分:1)

您还可以在grunt shell中使用copyFromLocal命令将本地文件移动到hdfs。

答案 2 :(得分:0)

通过pig -x local以本地模式打开pig shell,如果你的文件出现在hdfs,那么你可以使用pig打开grant shell。

$pig -x local
grunt> movies = load '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:chararray);


grunt> dump movies;