gpt4 book ai didi

hadoop - 使用 '-tagFile' 选项的项目文件名字段,使用 PigStorage '-tagFile' 加载,Pig 0.14

转载 作者:可可西里 更新时间:2023-11-01 16:46:36 26 4
gpt4 key购买 nike

Amazon EMR-4.5、Hadoop 2.7.2、Pig 0.14

我想在加载后使用 -tagFile 选项将文件名字段和选定字段投影到新关系。结果似乎没有意义。示例:

tagfile-test.txt(制表符分隔)

AAA    123    2016
BBB 456 2016
CCC 789 2016

负载转储

test = LOAD 'tagfile-test.txt' USING PigStorage('\t','-tagFile') AS (f0, f1, f2, f3);
DUMP test;

(tagfile-test.txt,AAA,123,2016)
(tagfile-test.txt,BBB,456,2016)
(tagfile-test.txt,CCC,789,2016)

正确 - 生成 f0、f1、f2

test = LOAD 'tagfile-test.txt' USING PigStorage('\t','-tagFile') AS (f0, f1, f2, f3);
project = FOREACH test GENERATE f0, f1, f2;
DUMP project;

(tagfile-test.txt,AAA,123)
(tagfile-test.txt,BBB,456)
(tagfile-test.txt,CCC,789)

不正确 - GENERATE f0, f1, f3(结果同上)

test = LOAD 'tagfile-test.txt' USING PigStorage('\t','-tagFile') AS (f0, f1, f2, f3);
project = FOREACH test GENERATE f0, f1, f3;
DUMP project;

(tagfile-test.txt,AAA,123)
(tagfile-test.txt,BBB,456)
(tagfile-test.txt,CCC,789)

不正确 - GENERATE f0, f2, f3(确认)

test = LOAD 'tagfile-test.txt' USING PigStorage('\t','-tagFile') AS (f0, f1, f2, f3);
project = FOREACH test GENERATE f0, f2, f3;
DUMP project;

(tagfile-test.txt,AAA,2016)
(tagfile-test.txt,BBB,2016)
(tagfile-test.txt,CCC,2016)

Pig 似乎没有正确识别字段名称。我尝试使用字段位置 ($0, $1, $2, $3) 得到相同的结果。

最佳答案

我在 pigstorage 中使用 tagFile 选项时遇到了同样的问题,并通过在 pig 脚本中添加以下行解决了这个问题:

set pig.optimizer.rules.disabled 'ColumnMapKeyPrune';

ColumnMapKeyPrune 在 http://chimera.labs.oreilly.com/books/1234000001811/ch07.html#debugging_tips 中有很好的解释

关于hadoop - 使用 '-tagFile' 选项的项目文件名字段,使用 PigStorage '-tagFile' 加载,Pig 0.14,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36582239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com