2016-09-06 38 views
1

我是新來的豬,並試圖自己學習。PIG:無法打開別名的迭代器AliasName.Scalar在輸出中有多個行

我已經寫了一個腳本來獲取從word.txt文件中讀取單詞的時代。

這是腳本。

words = LOAD 'words.txt' AS word:chararray; 
B = FOREACH A GENERATE CONCAT(CONCAT(A.word,'_'),(chararray)ToUnixTime(CurrentTime()); 
dump B; 

但問題是,如果words.txt文件只有一個詞,它會給出正確的輸出。

如果具有像

word1 
word2 
word3 
word4 

多個單詞然後它給以下錯誤

ERROR 1066:無法打開迭代器別名乙

java.lang中.Exception: org.apache.pig.backend.executionengine.ExecException:ERROR 0: 標量在輸出中有多行。 1:(word1),2:(word2)(常見原因:「JOIN」,然後「FOREACH ... GENERATE foo.bar」 應該是「foo :: bar」)在 org.apache.hadoop.mapred。 LocalJobRunner $ Job.runTasks(LocalJobRunner.java:462) at org.apache.hadoop.mapred.LocalJobRunner $ Job.run(LocalJobRunner.java:522) 引起:org.apache.pig.backend.executionengine.ExecException :錯誤 0:標量在輸出中有多個行。 (word1),第二個 :(word2)(常見原因:「JOIN」,然後「FOREACH ... GENERATE foo.bar」 應該是「foo :: bar」),位於 org.apache.pig.impl。 builtin.ReadScalars.exec(ReadScalars.java:122)at o

請建議我解決這個問題。

謝謝。

+0

有it.in腳本只是刪除A.它的工作 –

回答

1

自己解決。 剛剛從內部CONCAT刪除A.它爲我工作。

腳本:

words = LOAD 'words.txt' AS word:chararray; 
B = FOREACH A GENERATE CONCAT(CONCAT(word,'_'),(chararray)ToUnixTime(CurrentTime()); 
dump B;