【发布时间】:2017-07-21 16:48:04
【问题描述】:
我是 Spark 的新手(虽然我有 Hadoop 和 MapReduce 经验),并且正在尝试处理一个每行包含一条 JSON 记录的巨型文件。我想对每一行进行一些转换,并每 n 条记录(比如 100 万条)写入一个输出文件。因此,如果输入文件中有 750 万条记录,则应生成 8 个输出文件。 我怎样才能做到这一点?您可以使用 Java 或 Scala 提供答案。
使用 Spark v2.1.0。
【问题讨论】:
-
即使有可能,为什么?如果您有 HDFS,您将拥有将围绕 HDFS 块大小拆分的分区文件...话虽如此,您的数据可以(并且将)在一行中间拆分 /b>
-
换句话说,有很多 Spark 线程和进程在读取你的文件。你不能只说,好吧 process1,你得到 100 万行,而 process2,你得到下一个......如果你这样做,你最好不要使用 Spark。
-
@cricket_007 这些文件最终将用于填充 Couchbase 中的数据,我们可能不会同时加载所有这些文件。所以我们想要一口大小的块。我选择了 Spark,以便我可以根据需要进行扩展,但如果它不能满足我的要求,我将不得不寻找另一个可以的工具。
-
关于您的第二条评论,如果重要,我不在乎文件是如何读取的或有多少线程正在这样做。我希望输出按记录号分区。
-
为什么不能用Couchbase的spark连接器直接喂?
标签: java scala hadoop apache-spark spark-streaming