Pig error: unexpected character '\'

Pig error: unexpected character '\'

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

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 的文件中。在 运行s 之后,它完成并出现以下错误:

ERROR org.apache.pig.tools.grunt.GRUNT - -ERROR: Unexpected character '\'

从代码中删除字符 '\' 时,出现不同的错误:

ERROR org.apache.pig.tools.grunt.GRUNT - -ERROR: mismatched input '/' expecting QUOTEDSTRING

我无法找到解决这个问题的方法 error.I 在 Centos7 下的另一个虚拟机 (virtulabox) 上有 运行 这个问题并收到一个不同的错误 参数替换 :i 。我希望有人能够对此有所了解。

谢谢! wasmithpfs

删除反斜杠,即“\”,在存储语句中,路径必须用引号引起来。

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';

错误似乎很清楚:

字符 \ 不应该出现。

解决该问题后,代码可以进一步编译,您 运行 进入下一个错误:

在你有 / 的地方,需要一个带引号的字符串。

尽量用引号指明路径,如:

'/user/root/totalmiles'

有两个问题: 1、在load语句中,不需要'\'。查询解析器可以处理换行符。试试下面的加载语句。

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 语句后应该有单引号。尝试以下:

    将 tot_miles 存储到“/user/root/totalmiles”中;