Scala 将文件记录拆分为固定编号的记录

Scala 将文件记录拆分为固定编号的记录,scala,apache-spark,bigdata,Scala,Apache Spark,Bigdata,我有一个有10000行的大文件,我必须为这些记录调用API,但一次只能使用100行,所以需要一次将100行传递给restapi,并且只需要在scala上完成 10k记录通常不被视为大数据(如果每条记录小于1兆字节) 使用Spark是一项要求吗?Spark是一个用于大规模并行分布式计算的框架,根据您的描述,您似乎希望按顺序调用API。在Spark中,很可能需要从这里调用API 我建议你考虑在本地处理你的数据。调用API不是CPU密集型操作,因此不需要引入不必要的复杂性 像这样简单的方法也同样有效:

我有一个有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个元素。