【问题标题】:Pig latin - Reading data from a file and storing it as tuplePig latin - 从文件中读取数据并将其存储为元组
【发布时间】:2013-09-25 23:54:05
【问题描述】:

这是我的设置 - Pig - 0.10 运行模式 - 本地 用户 - hadoop 具有 root 访问权限

我有一个名为“数据”的文件,其中包含以下内容。 1 1 2 3 2 4 5 6 3 7 8 9 4 1 4 7 5 2 5 8

我正在关注 - http://pig.apache.org/docs/r0.10.0/basic.html#tuple-schema 的教程 我正在尝试读取文件,以便将每行中的第一个数字读取为整数,其余 3 形成一个元组。我正在使用此代码- a = 将“数据”加载为 (f1:int, f2:tuple(t1:int, t2:int, t3:int)); 但是当我做'dump a'时,我得到 - (1,) (2,) (3,) (4,) (5,)

它看起来与教程完全相同。但是输出的东西完全出乎意料。 我在这里做错了什么?

【问题讨论】:

  • 您的输入数据看起来更像链接中的第一个示例,只是一个连续的行。如果您看一下第二个示例: [(3,8,9) (mary,19)] 有括号标记元组

标签: apache-pig


【解决方案1】:

我不认为这可以完全在 load 语句中完成,但是一对语句可能会在没有太多麻烦的情况下做到这一点。试试下面的代码:

A = load 'data' USING PigStorage(' ') AS (f1: int, f2: int, f3: int, f4: int);
B = Foreach A Generate f1, TOTUPLE(f2,f3,f4);
dump B;

当我对此进行测试时,它产生了输出:(1,(1,2,3)),这似乎是您的目标。

编辑:记得用正确的文件路径替换“数据”到你的 hdfs 中的数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2020-02-09
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    相关资源
    最近更新 更多