【发布时间】:2019-01-07 02:36:44
【问题描述】:
我有一个用例,其中我有一组数据(例如:一个包含大约 1000 万行和大约 25 列的 csv 文件)。 我有一组规则(大约 1000 条规则),我需要更新记录,这些规则必须按顺序执行。
我写了一个代码,我在其中循环每个规则,并为每个规则更新数据。
假设规则是这样的
col1=5 和 col2=10 然后 col25=updatedValue
rulesList.foreach(rule=> {
var data = data.map(line(col1, col2, .., col25) => if(rule){
line(col1, col2, .., updatedValue)
} else {line(col1, col2, .., col25)})
})
这些规则将按顺序执行,最后 a 将获得更新的记录。
但问题是,如果规则和数据少于它正确执行但如果数据大于我得到 StackOverflow 错误,原因可能是因为它正在映射所有规则并像 map-reduce 一样最后执行它。
有什么方法可以让我逐步更新这些数据。
【问题讨论】:
标签: scala apache-spark dataframe apache-spark-sql