猪错误:意外字符'\'

时间:2016-05-27 15:50:02

标签: hadoop apache-pig

我是hadoop和猪的新手。我试图在VMWARE上的CentOS6环境中运行示例猪脚本:

records = LOAD '2013_subset.csv' USING PigStorage(',') AS              
(Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,\               
CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,\              
CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,\              
Distance:int,TaxiIn,TaxiOut,Cancelled,CancellationCode,\              
Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,\              LateAircraftDelay);milage_recs = 
GROUP records ALL;tot_miles = FOREACH milage_recs GENERATE SUM(records.Distance);STORE tot_miles INTO /user/root/totalmiles;

此代码保存到名为totalmiles.pig的文件中。运行后,它会以下列错误完成:

  

错误org.apache.pig.tools.grunt.GRUNT - -ERROR:意外字符'\'

从代码中删除字符'\'时,我得到一个不同的错误:

  

错误org.apache.pig.tools.grunt.GRUNT - -ERROR:不匹配的输入'/'期待QUOTEDSTRING

我无法找到这个特定错误的解决方案。我已经在Centos7下的另一个VM(virtulabox)上运行了这个并且收到了一个不同的错误参数subsitution:i 。我希望有人能够对此有所了解。

谢谢! wasmithpfs

3 个答案:

答案 0 :(得分:0)

删除反斜杠,即" \"并且在store语句中,路径必须用引号括起来。

records = LOAD '2013_subset.csv' USING PigStorage(',') AS (Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,RSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance:int,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay);
milage_recs = GROUP records ALL;
tot_miles = FOREACH milage_recs GENERATE SUM(records.Distance);
STORE tot_miles INTO '/user/root/totalmiles';

答案 1 :(得分:0)

错误似乎很清楚:

字符\不应该在那里。

解决之后,代码可以进一步编译,然后你会遇到下一个错误:

预计会有/引号字符串。

尝试使用引号指示路径,例如:

'/user/root/totalmiles'

答案 2 :(得分:0)

有两个问题: 1.在加载声明中,您不需要'。查询解析器可以处理换行符。请尝试以下加载语句。

records = LOAD '2013_subset.csv' USING PigStorage(',') AS (Year, Month, DayofMonth,
DyOfWeek, DepTime, CRSDepTime, ArrTime, CRSArrTime, UniqueCarrier, FlightNum, TailNum,
ActualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, Origin, Dest, Distance:int,
TaxiIn, TaxiOut, Cancelled, CancellationCode, Diverted, CarrierDelay, WeatherDelay, 
NASDelay, SecurityDelay, LateAircraftDelay);
  1. 在store语句中,在输出路径周围的INTO语句之后应该有单引号。请尝试以下:

    STORE tot_miles INTO' / user / root / totalmiles';