查看更多Apache Pig的教程请点击这里。
来看这个例子。有数据文件 1.txt,内容为:
a[\t][\t]c[\t]f[\t]gh[\t]k[\t]
[\t][\t][\t]
其中 [\t] 表示制表符(tab),并不是真的在文件中写了 [\t]。
在Pig命令行交互模式下加载这个文件,并把其中为空(NULL)的列替换成一些数字:
在Pig命令行交互模式下加载这个文件,并把其中为空(NULL)的列替换成一些数字:
A = LOAD '1.txt' AS (col1: chararray, col2: chararray, col3: chararray);
B = FOREACH A GENERATE (col1 IS NOT NULL ? col1 : '1') AS col1, (col2 IS NOT NULL ? col2 : '2') AS col2, (col3 IS NOT NULL ? col3 : '3') AS col3;
DUMP B;
输出:
(a,2,c)(1,f,g)(h,k,3)(1,2,3)
代码非常简单:如果第一列col1为空则替换为1,如果第二列为空则替换为2,如果第三列为空则替换为3。
这里使用了三元运算符 ? : 来做这个判断,写法非常丑陋。