如果ANY变量包含一个不可打印的字符,我想过滤输入数据集中的行。
问题在于我不希望每列都有正则表达式匹配,只想匹配整行,例如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匹配整个字符串或只是字符串中的任何位置......因此,我需要“+”扩展器吗?)
要求使用JAVA UDF是好的,只要我不需要安装任何傻瓜。
注意:我意识到明显的局限性:一旦加载,原始行肯定不可用。因此,它可能必须是LOAD中的某种形式的修饰符。