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. 

我看過文檔,但沒有找到任何線索。我的一個解決方案是爲數據中的不同ID創建不同的RDD/Dataframe。但在我的情況下,這不是可擴展的。 任何建議如何在數據幀上運行查詢,其中查詢可以特定於每個分區。

感謝

回答

1

我覺得你不應該對夫婦您的業務邏輯與您分區的數據(你將無法在需要時重新分區的數據)的斯巴克的方式。我會建議在DataFrame中添加一個與partitionId值相等的人工列。

在任何情況下,你總是可以做

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

docs見。