【发布时间】:2017-12-31 06:01:10
【问题描述】:
我正在使用 Scala 和 Spark,并希望将 XML 文件作为单个字符串读取。 我正在努力寻找一种简洁的 Scala 风格的方法来做到这一点。
我的第一个想法是使用
val fileContents: RDD[String] = sparkContext.textfile(pathToFile)
val combinedContents: String = fileContents.reduce((line1, line2) => line1 + line2)
但我担心这会保持行的顺序,这对于保持字符串中包含的 xml 的完整性很重要。
我在网上找到的用于在 HDFS 中读取文件的其他内容涉及使用已弃用的方法,因此我想避免使用这些方法。有什么想法吗?
【问题讨论】:
-
如果可以的话,我想避免使用非标准库,因为这会带来成本(支持、管理批准等)而且 xml 管理在应用程序的后期出现,我需要提供一个字符串。我现在并不关心它是 xml,这只是为了说明行的顺序很重要。
-
那为什么不
fileContents.collect呢? -
我担心是 sparkContext.textfile 阶段会导致订单丢失,但是最初的实验似乎表明并非如此,而 fileContents.collect.mkString 似乎可以工作。如果是这样,太好了,谢谢!是减少导致订单分崩离析还是我只是无法重复 .textfile 以破坏订单?
标签: xml scala apache-spark hdfs