Pig 中的替换功能如何工作?

How Replace function in Pig works?

我的输入文件名为 words.txt,如下所示。在下面这个文件的每条记录中也没有 space。

 Hi
 Hi
 How

我正在将此文件加载到 Pig

words = LOAD '/user/inputs/words.txt' USING PigStorage() AS (line:chararray);

words_each = FOREACH words GENERATE REPLACE(line,'','|') ;

dump words_each;

我得到的输出是

 |H|i|
 |H|i|
 |H|o|w|

但我想知道 REPLACE 函数究竟如何处理 '' 这是我在 REPLACE 函数中的第二个参数。

我的文件里没有空的space,那我怎么会得到|在我的输出中。

好吧,根据您的说法,在 '' 上调用了 REPLACE 函数。它不包含任何白色space.
如果你想替换space,你需要像这样给它' '。 +

两者都是不同的条件,如下所示:

words_each = FOREACH words GENERATE REPLACE(line,'','|') ; // without space
words_each = FOREACH words GENERATE REPLACE(line,' ','|') ; // with space

第一个条件会在每个字符后添加竖线符号(|),而第二个条件不会产生任何影响,因为您的文件内容中没有space。