pig:无法打开别名aliasname的迭代器scalar在输出中有多行

o4hqfura  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(393)

我对Pig还不熟悉,正努力自学。
我已经编写了一个脚本来获取一个单词的epoch时间,这个单词是从words.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

然后它给出以下错误
错误1066:无法打开别名b的迭代器
java.lang.exception:org.apache.pig.backend.executionengine.executeption:错误0:标量在输出中有多行。1:(单词1),2:(单词2)(共同原因:“join”然后“foreach…”。。。generate foo.bar“应该是”foo::bar“),位于org.apache.hadoop.mapred.localjobrunner$job.runtasks(localjobrunner)。java:462)在org.apache.hadoop.mapred.localjobrunner$job.run(localjobrunner。java:522)原因:org.apache.pig.backend.executionengine.executeption:错误0:标量在输出中有多行。1:(单词1),2:(单词2)(共同原因:“join”然后“foreach…”。。。generate foo.bar“应该是”foo::bar“),位于org.apache.pig.impl.builtin.readscalars.exec(readscalars)。java:122)在o
请建议我解决这个问题。
谢谢您。

bcs8qyzn

bcs8qyzn1#

我自己解决的。刚拆下a。从内耳盖。它对我有用。
脚本:

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

相关问题