Apache pig ApachePig-删除由-tagFile添加的伪列

Apache pig ApachePig-删除由-tagFile添加的伪列,apache-pig,Apache Pig,我有test_YYYYMM.txt格式的文件。我正在使用'-tagFile'和SUBSTRING()提取年份和月份,以便在我的pig脚本中使用 文件名作为伪列添加到元组的开头 在进行转储之前,我希望删除该列。正在做一个FOREACH。。。仅使用我需要的列生成不起作用,它仍然保留psuedo列 有没有办法删除此列 我的示例脚本如下 raw_data = LOAD 'test_201501.txt' using PigStorage('|', '-tagFile') as

我有test_YYYYMM.txt格式的文件。我正在使用'-tagFile'和SUBSTRING()提取年份和月份,以便在我的pig脚本中使用

文件名作为伪列添加到元组的开头

在进行转储之前,我希望删除该列。正在做一个FOREACH。。。仅使用我需要的列生成不起作用,它仍然保留psuedo列

有没有办法删除此列

我的示例脚本如下

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,测试数据,第1列,第2列

电流输出:
201501,TEST_DATA,TEST_YYYYMM.txt,col1,col2首先,如果col1和col2是字符串,那么应该在Pig中将它们声明为CHARARRAY。 另外,我猜您当前的输出实际上是:201501,TEST_DATA,TEST_YYYYMM.txt,col1。 如果我错了,请告诉我,但是当您使用“-TagFile”时,第一列是文件标题,这就是为什么您在子字符串中使用$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;
“字符串”是一个拼写错误。应该是查拉雷。我用$0访问它,从文件名(201501部分)中提取年份和月份。我已编辑问题以显示正确的数据类型