【问题标题】:Pig latin join by field猪拉丁按字段加入
【发布时间】:2015-06-10 19:48:20
【问题描述】:

我有一个猪拉丁相关的问题:

我有以下数据(在一行中):

A = LOAD 'records' AS (f1:chararray, f2:chararray,f3:chararray, f4:chararray,f5:chararray, f6:chararray);
DUMP A;

(FITKA,FINVA,FINVU,FEEVA,FETKA,FINVA)

现在我有了另一个数据集:

B = LOAD 'values' AS (f1:chararray, f2:chararray);
Dump B;
(FINVA,0.454535)
(FITKA,0.124411)
(FEEVA,0.123133)

我想加入这两个数据集。我将从数据集 B 中获取相应的值,并将该值放在数据集 A 的值旁边。所以预期的输出如下:

FITKA 0.123133, FINVA 0.454535 and so on .. 
(They can also be like: FITKA, 0.123133, FINVA, 0.454535 and so on .. )

然后我可以将值相乘 (0.123133 x 0.454535 .. and so on),因为它们现在在同一行上,这就是我想要的。

当然,我可以逐列加入,但是值会出现“行尾”,然后我可以使用另一个 foreach 生成来清理它。但是,我想要一些更简单的解决方案,没有太多可能导致性能问题的连接。

数据集 A 是文本(一种方式的句子..)。

那么我有什么选择来实现这一目标? 你能帮忙的话,我会很高兴。

【问题讨论】:

    标签: hadoop apache-pig udf


    【解决方案1】:

    一个句子可以表示为一个元组,并包含一个元组包(单词,计数)。

    因此,我建议您将存储数据的方式更改为以下格式:

    sentence:tuple(words:bag{wordcount:tuple(word, count)})
    

    【讨论】:

    • 您好,感谢您的快速回复。你能给我一些简短的猪脚本示例吗?问题仍然是具有单个单词和值的数据集(例如(Peter 0.454523))是静态的,并且具有句子的数据集经常变化。我了解您的架构,但是当我不得不将它们插入到您描述的架构中时,我迷失了方向..
    • 如果您想要的不仅仅是提示,请提供更多可以测试的信息和数据。
    • 好的,数据来了:
    • 提供输入数据集和预期输出。
    • 我已将两个数据集中的示例行放入原始问题中,并提供了希望的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多