我有test_YYYYMM.txt格式的文件。我使用'-tagFile‘和SUBSTRING()来提取年份和月份,以便在我的pig脚本中使用。
文件名作为伪列添加到元组的开头。
在进行转储之前,我想删除该列。做一个FOREACH ...只使用我需要的列生成不起作用,它仍然保留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
发布于 2015-08-05 23:13:17
首先,如果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;https://stackoverflow.com/questions/31816697
复制相似问题