Apache Pig - 删除-tagFile添加的伪列

时间:2015-08-04 18:32:19

标签: apache-pig

我有格式为test_YYYYMM.txt的文件。我使用'-tagFile'和SUBSTRING()来提取我的猪脚本中使用的年份和月份。

文件名在元组开头添加为伪列。

在我做DUMP之前,我想删除该列。做一个FOREACH ... GENERATE只有我需要的列不起作用,它仍然保留了psuedo-column。

有没有办法删除此列?

我的示例脚本如下

raw_data = LOAD 'test_201501.txt' using PigStorage('|', '-tagFile') as
              col1: chararray, col2: chararray; 

data_with_yearmonth = FOREACH raw_data GENERATE 
                      SUBSTRING($0,5,11) as yearmonth,
                      'TEST_DATA' as test,
                      col1,
                      col2;

DUMP data_with_yearmonth;

预期产出: 201501,TEST_DATA,col1,col2

电流输出: 201501,TEST_DATA,test_YYYYMM.txt,col1,col2

1 个答案:

答案 0 :(得分:2)

首先,如果col1和col2是字符串,那么你应该在Pig中将它们声明为CHARARRAY。 另外,我猜你当前的输出实际上是:201501,TEST_DATA,test_YYYYMM.txt,col1。 告诉我,如果我错了,但正如你使用过的那样--TagFile'第一列是文件标题,这就是您在SUBSTRING中使用$ 0访问它的原因。

您可以尝试使用以下代码:

raw_data = LOAD 'text_201505.txt' 
           USING PigStorage('|', '-tagFile') 
           AS (title: CHARARRAY, col1: CHARARRAY, col2: CHARARRAY); 

data_with_yearmonth = FOREACH raw_data 
                         GENERATE 
                             SUBSTRING($0,5,11) AS yearmonth,
                             'TEST_DATA' AS test,
                             col1,
                             col2;

 DUMP data_with_yearmonth;