0

私はsparkストリーミングアプリケーションでデータの特定のIDごとにデータをパーティション化しています。Spark Dataframeでパーティション固有のクエリを実行しています

For eg: partition 0-> contains all data with id 100 
partition 1 -> contains all data with id 102 

次のように、最終結果のデータフレーム全体でクエリを実行したいとします。しかし、私のクエリは各パーティションに固有です。

For eg: I need to run 
select(col1 * 4) in case of partiton 0 
while 
select(col1 * 10) in case of parition 1. 

私は文書を調べましたが、何か手掛かりが見つかりませんでした。私が持っている1つの解決策は、データ内の異なるIDに対して異なるRDD /データフレームを作成することです。しかし、それは私の場合はスケーラブルではありません。 クエリが各パーティションに固有のデータフレーム上でクエリを実行する方法を教えてください。私はあなたが(必要であれば、あなたのデータを再分割することはできません)あなたのデータを分割するスパークの道と結合ビジネス・ロジックをすべきでないと思う

おかげ

答えて

1

。 DataFrameにpartitionId値と等しい人工的な列を追加することをお勧めします。いずれの場合においても

、あなたは常に

df.rdd.mapPartitionsWithIndex{ case (partId, iter: Iterable[Row]) => ...}

を行うことができますもdocsを参照してください。

関連する問題