私はマッパーメソッドを持っています:
def mapper(value):
...
for key, value in some_list:
yield key, value
私が必要としているのは、実際には、通常の wordcount の例からそれほど離れていません。私はすでに作業中のスクリプトを持っていますが、マッパーメソッドが次のようになっている場合のみ:
def mapper(value):
...
return key, value
これはその呼び出しがどのように見えるかです:
sc.textFile(sys.argv[2], 1).map(mapper).reduceByKey(reducer).collect()
マッパーでジェネレーターをサポートするコードを書くのに 2 時間費やしました。しかし、それはできませんでした。リストを返すことにも同意します:
def mapper(value):
...
result_list = []
for key, value in some_list:
result_list.append( key, value )
return result_list
ここ: https://groups.google.com/forum/#!searchin/spark-users/flatmap $20multiple/spark-users/1WqVhRBaJsU/-D5QRbenlUgJ flatMap を使用する必要があることがわかりましたが、うまくいきませんでした-その後、レデューサーは(key1、value1、key2、value2、value3、...)のような入力を取得し始めました-しかし、それは[(key1、value1)、(key2、value2、value3)...]である必要があります。言い換えれば、リデューサーは単一のピースのみを取り始め、それが値なのかキーなのか、そして値の場合はどのキーに属するのかを知りません。
では、イテレータまたはリストを返すマッパーを使用するにはどうすればよいでしょうか?
ありがとう!