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。
我的输入文件名为 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。