我是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
答案 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);
在store语句中,在输出路径周围的INTO语句之后应该有单引号。请尝试以下:
STORE tot_miles INTO' / user / root / totalmiles';