我的Scala应用程序具有通过调用配置单元表创建的数据框。
一旦数据被提取,我将创建一个带有ID列表的集合:
val c_Set = inputDF.select("c_id").collect().map(_(0)).toSet
然后,我遍历此集合并过滤数据框以获取特定值,并将其传递给我的customer_function并将结果存储到另一个配置单元表中:
for (c_id <- c_Set) {
var c_DF = inputDF.filter(inputDF("c_id")===c_id).toDF()
val outTempDF = custom_function(c_DF)
writeHiveTable(spark, table, outTempDF)
}
我面临的问题是我的c_Set大小= 9000,并且custom_function(c_DF)大约需要30秒才能运行/迭代。因此以这种速度,我需要9000 * 30秒的时间来运行这段代码,大约需要70多个小时。
有人可以帮我优化这段代码,以便我可以并行遍历c_Set,以便可以并行化和分发c_Set以便快速运行并更快地给我结果。
谢谢