私は2つのデータフレーム(tx_dfとlogin_df)を持っています。 最初の列にはplayer_id、tx_id、およびtx_timeの列があり、2番目の列にはplayer_idとlogin_timeがあります。PySparkが最も近い時間値で2つのデータフレームを結合する
私がしたいのは、player_idカラムを使用して2つのデータフレームを結合することですが、それに加えて、login_dfからの最新のログインローだけを結合することです。 このようなtx_dfがある場合たとえば、このような
pid_1, txid_1, '2016-11-16 00:01:00'
pid_1, txid_2, '2016-11-16 00:01:02'
pid_1, txid_3, '2016-11-16 00:02:15'
pid_1, txid_4, '2016-11-16 00:02:16'
pid_1, txid_5, '2016-11-16 00:02:17'
とlogin_df:
pid_1, '2016-11-16 00:02:10'
pid_1, '2016-11-16 00:00:55'
pid_1, '2016-11-13 00:03:00'
pid_1, '2016-11-10 16:30:00'
私はこのように見えるために、データフレームを結果たい:
pid_1, txid_1, '2016-11-16 00:01:00', pid_1, '2016-11-16 00:00:55'
pid_1, txid_2, '2016-11-16 00:01:02', pid_1, '2016-11-16 00:00:55'
pid_1, txid_3, '2016-11-16 00:02:15', pid_1, '2016-11-16 00:02:10'
pid_1, txid_4, '2016-11-16 00:02:16', pid_1, '2016-11-16 00:02:10'
pid_1, txid_5, '2016-11-16 00:02:17', pid_1, '2016-11-16 00:02:10'
が、私はないですデータフレームへの義務的なバインディングなので、RDDや他の方法を使ってうまくいく方法を理解することができます。
tx_dfにはすべてのプレーヤーID(さらには数千のプレーヤーID)のトランザクションエントリが数千件あり、login_dfには未知数のプレイヤーログイン情報が含まれている可能性があるため、データが爆発することがあります。 player_idでこれら2つを結合するだけで、受け入れられないデカルト積の結果として膨大なデータフレームが作成されます。
注:私はPython API for Sparkを使用しています。