将文件记录拆分为修复编号记录[关闭]
Posted
技术标签:
【中文标题】将文件记录拆分为修复编号记录[关闭]【英文标题】:Splitting a file records into fix number records [closed] 【发布时间】:2018-02-24 18:56:24 【问题描述】:我有一个包含 10,000 行的大文件,我必须为这些记录调用 API,但一次只能使用 100 行,因此需要一次将 100 行传递给该 restapi,它需要只能在 scala 上完成。
【问题讨论】:
那么您希望我们提供什么帮助?你甚至没有显示任何代码。 欢迎来到 ***。你需要澄清这个问题,并展示你到目前为止所做的尝试。这个问题太笼统了。请read this before posting questions. 【参考方案1】:10k 记录通常不被视为大数据(如果每条记录小于 1 MB)。
是否需要使用 Spark? Spark 是一个用于大规模并行分布式计算的框架,从您的描述来看,您似乎希望按顺序调用 API。在 Spark 中,这很可能需要 loading data into central (driver) node 并从这里调用您的 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 调用,那么您可以使用 Scala's built-in parallel collections,就这么简单:
s.getLines().grouped(100).toStream.par.map
ls: Seq[String] => apiCall(ls)
.seq
【讨论】:
非常感谢 Aivean ..还有一个疑问,如果总行数不是 100 的倍数 ..假设我在文件中有 198 行,那么如何处理它 @A.Mishra,在这种情况下,grouped 返回的最后一批将少于 100 个元素。以上是关于将文件记录拆分为修复编号记录[关闭]的主要内容,如果未能解决你的问题,请参考以下文章