gpt4 book ai didi

java - Spark-如何将每n行写入不同的输出文件?

转载 作者:行者123 更新时间:2023-12-02 22:03:38 25 4
gpt4 key购买 nike

我是Spark的新手(尽管我具有Hadoop和MapReduce的经验),并且正在尝试处理每行带有JSON记录的巨型文件。我想对每一行进行一些转换,并每n条记录(例如1百万个)写入一个输出文件。因此,如果输入文件中有750万条记录,则应生成8个输出文件。
我怎样才能做到这一点?您可以使用Java或Scala提供答案。

使用Spark v2.1.0。

最佳答案

您可以使用类似:

val dataCount = data.count
val numPartitions = math.ceil(dataCount.toDouble/100000).toInt
val newData = data.coalesce(numPartitions)
newData.saveAsTextFile("output path")

我目前在Windows游戏机上。因此,此代码未经测试,可能包含一些小错误。但总的来说应该可行。

引用: Spark: Cut down no. of output files

附带说明一下,虽然控制分区的大小不是一个坏主意,但任意决定要在分区中存储100万条记录可能不是解决之道。通常,您会弄乱分区大小以优化群集利用率。

编辑:我应该注意,这不能保证您每个分区都有一百万条记录,只是您应该在那个球场上有东西。

关于java - Spark-如何将每n行写入不同的输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com