【问题标题】:Combine multiple lines in a RDD to a single line将 RDD 中的多行合并为一行
【发布时间】:2017-03-10 00:42:43
【问题描述】:

我有以下情况: val rdd = sc.textFile("textfile");

"textfile" 是一个多行文件。我只需要将多行连接成一行,然后再以文件格式保存。

我对此进行了很多研究。但是,找不到问题的解决方案。

非常感谢您的帮助

谢谢, 象头神

【问题讨论】:

  • 不要使用 Spark。在几乎所有情况下,只需简单地通过文件删除行结尾就会更快

标签: scala apache-spark text-files rdd


【解决方案1】:

你可以像这样使用reduce:

rdd.reduce((a,b) = a + b) 或更简洁的rdd.reduce(_ + _)

【讨论】:

  • 感谢您的回复。想澄清一个方面:reduce 操作不会作用于数字数据吗?就我而言,文本文件中只有文本数据。
  • 它适用于具有满足 (T,T) => T 的运算符的任何类型。+ 运算符为 Strings 重载,为我们提供 (String, String) =>字符串
  • 请记住,reduce 会将结果拉到驱动程序上,因此如果文件很大,这将不起作用。
  • @puhlen 鉴于 OP 最终会得到一条巨大的线路,无论采用何种方法,它最终都必须适合驱动程序。
  • @TheArchetypalPaul 这不是真的。 OP 想要一个文件中的单个大行,而不是内存中。整行不需要一次在内存中。
猜你喜欢
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多