Scala-具有不同参数的调用函数并行

时间:2018-07-22 00:29:03

标签: scala apache-spark collections apache-spark-sql scala-collections

我的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以便快速运行并更快地给我结果。

谢谢

0 个答案:

没有答案