如果任何变量包含不可打印的字符,我想过滤掉传入数据集中的行。
问题是我不希望每列都有一个regexp匹配,只希望regexp匹配整行,比如 $_
在perl中。与之相配的东西 $0
, $1
或者 $*
表示任何列(不确定数字列会发生什么情况)。
因此,我想这样做:
tuple_stuff = LOAD 'really_big_file' USING PigStorage()
AS (
some_column:LONG,
another_column:CHARARRAY,
yet_another:CHARARRAY
...
ninty_fifth_column:CHARARRAY);
filtered_stuff = FILTER tuple_stuff BY ! $_ MATCHES '[^:print:]+';
(旁注:我记不起pig与整个字符串或字符串中的任何地方匹配…因此,我需要“+”扩展器吗?)
被要求使用javaudf是可以的,前提是我不必安装任何愚蠢的东西。
注意:我意识到这一点的明显局限性:一旦加载,原始行肯定不可用。因此,它可能是某种形式的修改器加载。
暂无答案!
目前还没有任何答案,快来回答吧!