gpt4 book ai didi

hadoop - Apache Pig 没有完全解析元组

转载 作者:可可西里 更新时间:2023-11-01 15:03:29 26 4
gpt4 key购买 nike

我有一个名为 data 的文件,它看起来像这样:(注意“personA”之后有制表符)

personA (1, 2, 3)
personB (2, 1, 34)

我有一个像这样的 Apache pig 脚本:

A = LOAD 'data' AS (name: chararray, nodes: tuple(a:int, b:int, c:int));
C = foreach A generate nodes.$0;
dump C;

其输出有意义:

(1)
(2)

但是,如果我将脚本的架构更改为如下所示:

A = LOAD 'data' AS (name: chararray, nodes: tuple());
C = foreach A generate nodes.$0;
dump C;

然后我得到的输出是这样的:

(1, 2, 3)
(2, 1, 34)

看起来这个元组中的第一个(也是唯一一个)元素是字节数组。也就是说,它不会将输入文本 1, 2, 3 解析为元组。

将来我的输入将在 nodes 项中包含未知且可变数量的元素,因此我不能只写出 a:int, …

有没有办法让 Pig 将输入元组解析为元组,而不必写出完整的模式?

最佳答案

Pig 不接受您传入的内容是有效的。默认的加载方案 PigStorage 只接受分隔文件(默认为制表符分隔)。用文本中的括号和逗号解析元组结构不够聪明。您的选择是:

  • 将您的文件重新格式化为制表符分隔:personA 1 2 3
  • TextLoader逐行读取文件, 然后写一些 UDF解析该行并以您想要的形式返回数据。
  • 自己写custom loader .

关于hadoop - Apache Pig 没有完全解析元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838408/

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