これは非常に単純なことだと確信していますが、これに関連するものは何も見つかりませんでした。
私のコードは簡単です:
...
stream = stream.map(mapper)
stream = stream.reduceByKey(reducer)
...
出力は次のようになります。
...
key1 value1
key2 [value2, value3]
key3 [[value4, value5], value6]
...
等々。そのため、フラットな値を取得することがあります (単一の場合)。場合によっては、非常に深いネストされたリスト (私の単純なテスト データでは 3 レベルの深さでした)。
「フラット」のようなものをソースから検索しようとしましたが、必要なものではない(私が理解しているように)flatMapメソッドしか見つかりませんでした。
これらのリストがネストされている理由がわかりません。私の推測では、それらは異なるプロセス (ワーカー?) によって処理され、平坦化せずに結合されたのです。
もちろん、そのリストを展開して平坦化するコードを Python で書くこともできます。しかし、これは通常の状況ではないと思います。ほぼすべての人が一定の出力を必要としていると思います。
itertools.chain は、最初に見つかった反復不可能な値で展開を停止します。つまり、まだコーディングが必要です (前の段落)。
では、PySpark のネイティブ メソッドを使用してリストをフラット化する方法は?
ありがとう