2016-12-09 3 views
0

Я сам учу себя, я застреваю с одной ошибкой.Ошибка при выполнении скрипта для скрипта Apache с опцией макроса

Это написано в сценарии макросов, чтобы понимать модульное программирование на Pig. проблема в том, что я пытаюсь использовать строковые параметры с $ путем ссылки на имя отношения :: затем сразу замену строки параметра с помощью $. Ошибка:

неожиданный символ $

Как идти вперед по этому поводу?

define dividend_analysis (daily, year, daily_symbol, daily_open, daily_close) 
returns analyzed { 
     divs = load '/PigData1/NYSE_dividends.txt'as (exchange:chararray, symbol:chararray, date:chararray, dividends:float); 
     divisthisyear = filter divs by date matches '$year-.*'; 
     dailythisyear = filter $daily by date matches '$year-.*'; 
     jnd = join divisthisyear by symbol, dailythisyear by $daily_symbol; 
     $analyzed  = foreach jnd generate dailythisyear.$daily_symbol,$daily_close - $daily_open; 
}; 
daily = load '/PigData1/NYSE_daily.txt'as (exchange:chararray, symbol:chararray, date:chararray, open:float, high:float, low:float, close:float, volume:int, adj_close:float); 
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close'); 

сообщение об ошибке от свиньи ...

<line 7, column 53> Unexpected character '$' 
2016-12-09 16:14:04,283 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 7, column 53> Unexpected character '$' 
Details at logfile: /home/hadoop/pig_1481278051535.log 
grunt> exec macro1.pig 
<line 7, column 53> Unexpected character '$' 
2016-12-09 17:00:37,723 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 7, column 53> Unexpected character '$' 
Details at logfile: /home/hadoop/pig_1481278051535.log 

ответ

0

Здесь изменение сделано для вашего скрипта, попробуйте это один

define dividend_analysis (daily, year, daily_symbol, daily_open, daily_close) 
returns analyzed { 
divs = load '/user/data/NYSE_dividends'as (exchange:chararray, symbol:chararray, date:chararray, dividends:float); 
divisthisyear = filter divs by date matches '.*$year.*'; 
dailythisyear = filter $daily by date matches '.*$year.*'; 
jnd = join divisthisyear by symbol, dailythisyear by $daily_symbol; 
$analyzed = foreach jnd generate $1 ,$daily_close - $daily_open; }; 
daily = load '/user/data/NYSE_daily'as (exchange:chararray, symbol:chararray,  date:chararray, open:float, high:float, low:float, close:float, volume:int, adj_close:float); 
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close'); 
+0

Мурали, я поместил все эти команды в macro1.pig и не выполнил никаких проблем. Можете ли вы отправить мне шаги, если вы работаете по-другому? –

+0

спасибо за информацию, ее работу –

Смежные вопросы