Apache spark 在Spark Dataframe中运行特定于分区的查询

Apache spark 在Spark Dataframe中运行特定于分区的查询,apache-spark,apache-spark-sql,spark-streaming,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Streaming,Spark Dataframe,我正在开发spark流媒体应用程序,其中我根据数据中的某个ID对数据进行分区 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 whil

我正在开发spark流媒体应用程序,其中我根据数据中的某个ID对数据进行分区

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。但就我而言,这是不可扩展的。 任何关于如何在dataframe上运行查询的建议,其中查询可以特定于每个分区


谢谢

我认为您不应该将业务逻辑与Spark的数据分区方式结合起来,因为如果需要,您将无法重新分区数据。我建议在DataFrame中添加一个与partitionId值相等的人工列

在任何情况下,你都可以这样做

mapPartitionsWithIndex{case partId,iter:Iterable[Row]=>…}

另见