1

次のタイプのレコードがあります。

time | url
==========
34 google.com 
42 cnn.com
54 yahoo.com
64 fb.com

time_diffこれらのレコードに、基本的に現在のレコードと前のレコードの時間の差を取る別の列を追加したいと思います。出力は次のようになります。

time | url | time_diff
======================
34 google.com -- <can drop this row>
42 cnn.com    08
54 yahoo.com  12
64 fb.com     10

time42 が 34 と整列し、54 が 42 と整列するように 1 ずつシフトする別の列 ( と同じ) を何らかの方法で追加できればtime、これらの列の差をとって列を計算できtime_diffます。

time列を新しい変数に投影できTます。元のデータの最初のレコードを削除できれば、それを結合しTて目的の結果を得ることができます。

助けていただければ幸いです。ありがとう!

4

2 に答える 2

3

たとえば、この質問を参照してください。タプルをバッグに入れて (GROUP ... ALLあなたの場合は を使用して)、ネストされたFOREACHでそれらを取得し、ORDERそれらをランク付けするために UDF を呼び出す必要があります。このランクを取得したらFLATTEN、バッグを再びタプルのセットに戻すことができます。これtimeにより、 、url、およびの 3 つのフィールドが得られますrank。これを取得したら、 である 4 番目の列を作成し、rank-1後者の 2 つの列で自己結合を行うと、 を計算するために必要なものが得られますtime_diff

複数のレコードが同じ を持つ可能性があるため、毎回同じ結果が保証されるように、time並べ替えも行うことをお勧めします。url

于 2013-01-17T13:26:28.167 に答える