2017-06-12 14 views
0

私はpysparkを使用しています。スパークマップ機能のディクショナリでjsonファイルを使用する方法は?

Googleマップにリージョン名とそのポリゴンを含む「region-polygon-mapping」というファイルを読み込んでいます。

私は別のデータセットRDDを処理するとき、RDDのポイントがポリゴンであるかどうかをテストするために、マップ関数で "region-polygon-mapping"を使いたいと思います。

RDDマップ機能でjsonを通常のファイルとして使用するにはどうすればよいですか。 jsonファイルは非常に小さく、sparkは2番目のrddとしてjsonを使用することを許可しません。なぜなら、別のrddのマップ関数のrddをユーザーに割り当てることはできないからです。私がそれをするなら、ここに誤りがあります。

pickle.PicklingError:オブジェクトを過度に深く再帰させる必要がありませんでした。

答えて

0

私はpythonまたはpysparkで作業していませんが、私はこれに答えようとします。

別のデータセットを処理しているときに、参照用に1つのデータセットを使用しようとしているとしますか?私が間違っているなら私を訂正してください。

これを行うには、結合を実装する必要があります。以下の小さな例

countryNameと通貨で小さなデータセットがあるとします。 userID、countryNameなどの情報を含むユーザーログを処理する必要があります。あなたはどのユーザーがどの通貨を持つのかを知る必要があります。

あなたはcountryNameに参加する必要があります。

最初のデータセットがRDDの場合は、キャッシュすると便利です。

これが役立つかどうか教えてください。歓声

0

サンプルデータがない場合、jsonファイルに{key:value}構造があると仮定しています。どちらの方法でも、jsonモジュールを使用してjsonファイルをミラーリングする構造にjsonファイルをロードできます。 {key:value}の形式のファイルの場合、データは辞書としてPythonにロードされます。一度それを持っていると、あなたは非常に簡単にあなたのrddをマップするためにその辞書を使用することができます。あなたのrddは、地域の分散型リストであり、そして地域ポリゴンマッピングをポリゴンに領域をマップするために意図されている場合たとえば、次のコードは、あなたのマップの出力が得られます:

import json 

with open('region-polygon-mapping.json','r') as json_data: 
    rp_map=json.load(json_data) 

mappedrdd=rdd.map(lambda x:rp_map[x]) 

mappedrddはポリゴンのrddになります。これはいくつかの詳細を残すかもしれませんが、あなたのユースケースのために簡単に変更可能でなければなりません。

関連する問題