我有一个csv文件sample.csv
,位于\home\hadoop\Desktop\script\sample.csv
。
我尝试使用
movies = load '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id,name,year,rating,duration);
但是这个PIG语句给出了一个错误,但是当声明为dump movies;
时,它会抛出错误并显示输入和输出失败。
请建议我如何使用pig声明加载数据。
答案 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;