首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Pig -删除-tagFile添加的伪列

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

Stack Overflow用户
提问于 2015-08-05 02:32:19
回答 1查看 63关注 0票数 0

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

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

在进行转储之前,我想删除该列。做一个FOREACH ...只使用我需要的列生成不起作用,它仍然保留psuedo-column。

有什么方法可以删除这个列吗?

我的示例脚本如下

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-08-05 23:13:17

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

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

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31816697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档