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);
在 store 语句中,输出路径周围的 INTO 语句后应该有单引号。尝试以下:
将 tot_miles 存储到“/user/root/totalmiles”中;
我是 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);
在 store 语句中,输出路径周围的 INTO 语句后应该有单引号。尝试以下:
将 tot_miles 存储到“/user/root/totalmiles”中;