2013-06-24 2 views
4

Давайте предположим, что мой файл называется «данные» и выглядит следующим образом:свинья ЗАМЕНЫ дает ошибку

2343234 {23,8375, -2,339921102} {(343,34333, -2,0000022)} 5-23-2013-11-ам

Мне нужно преобразовать 2-е поле в пару координат. Поэтому я написал код происходит некорректно и назвал его basic.pig:

A = LOAD 'data' AS (f1:int, f2:chararray, f3:chararray. f4:chararray); 

B = foreach A generate STRSPLIT(f2,',').$0 as f5, STRSPLIT(f2,',').$1 as f6; 

C = foreach B generate REPLACE(f5,'{',' ') as f7, REPLACE(f6,'}',' ') as f8; 

, а затем использовали (с плавающей точкой), чтобы преобразовать строку в число с плавающей точкой. Но, команда «REPLACE» не работает, и я получаю следующее сообщение об ошибке:

-bash-3.2$ pig -x local basic.pig 


2013-06-24 16:38:45,030 [main] INFO org.apache.pig.Main - Apache Pig version 0.11.1 (r1459641) compiled 

Mar 22 2013, 02:13:53 2013-06-24 16:38:45,031 [main] INFO org.apache.pig.Main - Logging error messages to: /home/--/p/--test/pig_1372117125028.log 

2013-06-24 16:38:45,321 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/isl/pmahboubi/.pigbootup not found 

2013-06-24 16:38:45,425 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:/// 

2013-06-24 16:38:46,069 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Lexical error at line 7, column 0. Encountered: <EOF> after : "" 

Details at logfile: /home/--/p/--test/pig_1372117125028.log 

И это детали pig_137..log

Pig Stack Trace 
--------------- 
ERROR 1000: Error during parsing. Lexical error at line 7, column 0. Encountered: <EOF> after : "" 

org.apache.pig.tools.pigscript.parser.TokenMgrError: Lexical error at line 7, column 0. Encountered: <EOF> after : "" 
    at org.apache.pig.tools.pigscript.parser.PigScriptParserTokenManager.getNextToken(PigScriptParserTokenManager.java:3266) 
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.jj_ntk(PigScriptParser.java:1134) 
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:104) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:194) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170) 
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 
    at org.apache.pig.Main.run(Main.java:604) 
    at org.apache.pig.Main.main(Main.java:157) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:197) 
================================================================================ 

ответ

3

Я получил такие данные:

2724 1919 2012-11-18T23:57:56.000Z {(33.80981975),(-118.105289)} 
2703 6401 2012-11-18T23:57:56.000Z {(55.83525609),(-4.07733138)} 
1200 4015 2012-11-18T23:57:56.000Z {(41.49609152),(13.8411998)} 
7104 9227 2012-11-18T23:57:56.000Z {(-24.95351118),(-53.46538723)} 

и я могу это сделать:

A = LOAD 'my_tsv_data' USING PigStorage('\t') AS (id1:int, id2:int, date:chararray, loc:chararray); 
B = FOREACH A GENERATE REPLACE(loc,'\\{|\\}|\\(|\\)','');                         
C = LIMIT B 10;                                   
DUMP C; 
2

Эта ошибка

ERROR 1000: Error during parsing. Lexical error at line 7, column 0. Encountered: <EOF> after : "" 

Пришло ко мне, потому что я использовал разные типы кавычек. Я начал с «и закончил с» или «, и потребовалось довольно много времени, чтобы найти, что пошло не так. Таким образом, это не имело никакого отношения к строке 7 (мой сценарий был не таким долгим, и я сократил данные до четырех строк, которые, естественно, не помогли), не имеет ничего общего с столбцом 0, не имеет ничего общего с EOF данных, и вряд ли что-либо делать с "метками, которые я не использовал так довольно обманчивое сообщение об ошибке

Я нашел причину с помощью хрюканье. -.. команды свинья оболочки

+0

Этот ответ спас мой день Это сообщение довольно вводящим в заблуждение ошибка.. –