3

サイズ(バッグ内のタプルの数)が異なる可能性のある情報の「バッグ」を生成しています。これから、最初の要素をその場で抽出したいと思います。どうすればよいですか?

4

3 に答える 3

8

DataFu UDFを使用する:FirstTupleFromBag(http://datafu.incubator.apache.org/docs/datafu/1.2.0/datafu/pig/bags/FirstTupleFromBag.html

于 2014-05-15T16:36:02.627 に答える
4

ドキュメントによると、バッグはタプルのコレクションであり、

バッグの間接参照は、名前(bag.field_name)または位置(bag。$ 0)で実行できます。フィールドのセットが逆参照される場合(bag。(name1、name2)またはbag。($ 0、$ 1))、式は指定されたフィールドで構成されるバッグを表します。

b.$0ただし、バッグは注文されていないため、バッグの最初のタプルを提供しないように注意してください。構成タプルの最初の要素を取得します。

バッグを注文した構造に変換するか、UDFを使用する必要があります。また、この回答を受け入れずに(削除できるように)、代わりにUDFへのリンクを持つGuarevの回答を受け入れる必要があります。

于 2012-06-20T06:33:53.623 に答える
1

バッグ内のタプルの順序が「最初の」タプルを取得するために重要である場合(もちろんそうです!)、 https://community.hortonworks.com/でより詳細に説明されている次のようなことを行うことができます。質問/22863/cant-we-filter-the-data-which-we-have-done-in-37-s.html#answer-22995

max_runs = FOREACH grp_data {
    inner_sorted = ORDER runs BY runs DESC;
    first_row = LIMIT inner_sorted 1;
    GENERATE first_row AS most_hits;
}
于 2016-03-15T03:12:06.140 に答える