私は効率的に最も近い都市とユーザーログインを一致させようとしています。Sparkの機能に基づいて共通鍵を使用しない2つのRDDに参加する
- RDD1:checkin_id、USER_ID、SESSION_ID、UTC_TIME、timezone_offset、 緯度、経度、カテゴリ、サブカテゴリ
- RDD2:CITY_NAME、緯度、経度、COUNTRY_CODE
次の2つのRDDSから開始、国、city_type
は私がhaver-sin関数によって計算さ最も近い街に基づいて、次の形式にこれら2に参加したいと思います。
- checkin_id Scalaで、user_idは、SESSION_ID、UTC_TIME、timezone_offset、 緯度、経度、カテゴリ、サブカテゴリ、CITY_NAME、国
私はこれはループのため、二重で行うが、これは許可されていませんスパークで私はデカルト(rdd1.Cartesian(rdd2))を使用して縮小しようとしましたが、これは私に大規模なN * M行列を与えます。
最短のhaver-sin距離に基づいて、これらのRDDを結合するスペース効率の良い方法がありますか?
ログインするたびに、各都市までの距離を計算する必要があるため、デカルト積をすることはできません。つまり、定義によってはデカルト積を行う必要があります。 –