gpt4 book ai didi

apache-pig - 我如何阅读 Pig 中的行李 list ?

转载 作者:行者123 更新时间:2023-12-01 10:55:55 25 4
gpt4 key购买 nike

如何在 Pig 中读取包列表?

我试过:

grunt> cat sample.txt
{a,b},{},{c,d}
grunt> data = LOAD 'sample.txt' AS (a:bag{}, b:bag{}, c:bag{});
grunt> DUMP data
({},,)

最佳答案

将数据读入 Pig 的默认方法是 PigStorage('\t') —— 也就是说,它假设您的数据是用制表符分隔的。你的是逗号分隔的。所以你应该写 LOAD 'sample.txt' USING PigStorage(',') AS...

但是,您的数据不是正确的 Pig 包格式。请记住,包是元组的集合。如果您不能预处理您的输入,您将不得不编写一个 UDF 来解析您所给表单的输入。所以这应该工作:

grunt> cat tmp/data.txt
{(a),(b)},{},{(c),(d)}
grunt> data = LOAD 'tmp/data.txt' USING PigStorage(',') AS (a:bag{}, b:bag{}, c:bag{});
grunt> DUMP data;
(,,{})

出了什么问题?您的输入字段分隔符 (,) 与 bag-record 分隔符相同这一事实让 Pig 感到困惑。它将您的输入解析到字段 {(a)(b)}{},这就是为什么只有第三个字段结束是一个袋子。这就是为什么您会看到类似 Encountered Warning FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 time(s) 的警告消息。

如果可以,请尝试使用制表符或空格(或分号,或...)而不是逗号:

grunt> cat tmp/data.txt                                                                
{(a),(b)} {} {(c),(d)}
grunt> data = LOAD 'tmp/data.txt' AS (a:bag{}, b:bag{}, c:bag{});
grunt> DUMP data;
({(a),(b)},{},{(c),(d)})

关于apache-pig - 我如何阅读 Pig 中的行李 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160400/

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