Apache pig ApachePig-删除由-tagFile添加的伪列
我有test_YYYYMM.txt格式的文件。我正在使用'-tagFile'和SUBSTRING()提取年份和月份,以便在我的pig脚本中使用 文件名作为伪列添加到元组的开头 在进行转储之前,我希望删除该列。正在做一个FOREACH。。。仅使用我需要的列生成不起作用,它仍然保留psuedo列 有没有办法删除此列 我的示例脚本如下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
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部分)中提取年份和月份。我已编辑问题以显示正确的数据类型