gpt4 book ai didi

hadoop - PIG : Cannot turn (key, (tuple_of_3_things)) into (key, tupelement1, tupelement2, tupelement3)

转载 作者:可可西里 更新时间:2023-11-01 14:58:44 26 4
gpt4 key购买 nike

我有一个关系,reflat1。下面是 DESCRIBE 和 DUMP 的输出。

reflat1: {cookie: chararray,tupofstuff: (category: chararray,weight: double,lasttime: long)}
(key1,(613,1.0,1410155702)
(key2,(iOS,1.0,1410155702)
(key3,(G.M.,1.0,1410155702)

是的,我注意到括号没有闭合。我不知道为什么。也许没有括号的原因是我所有问题的根源。

我想将其转换为具有 4 个字段的关系(我们称其为 reflat2),理想情况下如下所示:

(key1, 613, 1.0,1410155702)   
(key2, iOS, 1.0,1410155702)
(key3, G.M., 1.0,1410155702)

但是我的代码不工作。以下是相关位。

reflat2 = foreach reflat1 {
GENERATE
cookie as cookie,
tupofstuff.(category) as category,
tupofstuff.(weight) as weight,
tupofstuff.(lasttime) as lasttime;
};
r1 = LIMIT reflat2 100;
dump r1;

这导致了我期望的模式:

DESCRIBE reflat2
reflat2: {cookie: chararray,category: chararray,weight: double,lasttime: long}

但是在转储上给出了一个错误:

Unable to open iterator for alias r1

当我查看失败的 MapReduce 作业的错误时,我看到:

java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.pig.data.Tuple

这很奇怪,因为我正在将元组转换为字符串(以及 double 和长整数),反之亦然。

最佳答案

在 TUPLE 上使用 FLATTEN 将元组的元素带到外面。您应该按如下方式使用展平:

reflat2 = foreach reflat1 GENERATE cookie, FLATTEN(tupofstuff);

希望这对您有所帮助。

关于hadoop - PIG : Cannot turn (key, (tuple_of_3_things)) into (key, tupelement1, tupelement2, tupelement3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023198/

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