Scala 将文件记录拆分为固定编号的记录
我有一个有10000行的大文件,我必须为这些记录调用API,但一次只能使用100行,所以需要一次将100行传递给restapi,并且只需要在scala上完成 10k记录通常不被视为大数据(如果每条记录小于1兆字节) 使用Spark是一项要求吗?Spark是一个用于大规模并行分布式计算的框架,根据您的描述,您似乎希望按顺序调用API。在Spark中,很可能需要从这里调用API 我建议你考虑在本地处理你的数据。调用API不是CPU密集型操作,因此不需要引入不必要的复杂性 像这样简单的方法也同样有效:Scala 将文件记录拆分为固定编号的记录,scala,apache-spark,bigdata,Scala,Apache Spark,Bigdata,我有一个有10000行的大文件,我必须为这些记录调用API,但一次只能使用100行,所以需要一次将100行传递给restapi,并且只需要在scala上完成 10k记录通常不被视为大数据(如果每条记录小于1兆字节) 使用Spark是一项要求吗?Spark是一个用于大规模并行分布式计算的框架,根据您的描述,您似乎希望按顺序调用API。在Spark中,很可能需要从这里调用API 我建议你考虑在本地处理你的数据。调用API不是CPU密集型操作,因此不需要引入不必要的复杂性 像这样简单的方法也同样有效:
import scala.io.Source
import scala.util.Try
val s = Source.fromFile("/path/to/file")
try {
s.getLines().grouped(100).map {
ls: Seq[String] => apiCall(ls) // ls is Seq of 100 lines
}
} finally {
Try(s.close())
}
如果您希望并行而不是按顺序进行API调用,那么您可以简单地使用:
s.getLines().grouped(100).toStream.par.map {
ls: Seq[String] => apiCall(ls)
}.seq
那你想让我们帮什么忙?你甚至不显示任何代码。欢迎来到StackOverflow。你需要澄清这个问题,并展示你迄今为止所做的努力。这个问题太宽泛了。请。非常感谢艾文。还有一个疑问,如果总行数不是100的倍数。比如假设我在文件中有198行,那么它怎么可能是handled@A.Mishra,在这种情况下,返回的最后一批将少于100个元素。