我正在使用Scala和Spark,并希望将XML文件作为单个字符串读取。 我很难找到一个简洁的Scala-ish方法来做到这一点。
我的第一个想法是使用
a
但我担心这会维持行的顺序,这对于保持字符串中包含的xml的完整性很重要。
我在网上找到的用于读取HDFS中文件的其他内容涉及使用弃用的方法,所以我想避免这些。有什么想法吗?
答案 0 :(得分:0)
sc.textFile返回带有"排序行"的RDD。 请注意,如果在提供的路径中有多个文件,则文件也将按字母顺序(文件名)分配给分区。 因此,作为结论,sc.textFile保持行的顺序。
至于我可以检查查看collect()方法的实现,也保留了顺序,所以没有理由不直接使用:
sc.textFile(pathToFile).collect()
这应该有用。
但是,如果你想为collect的不同实现做好准备(因为在文档中不能保证保持顺序)我建议使用的RDD方法zipWithIndex在哲学上等同于scala' s具有相同名称的方法。
所以我会做这样的事情:
sc.textFile(pathToFile).zipWithIndex().collect().sortBy(_._2).map(_._1)
答案 1 :(得分:0)
选项:
sparkContext.wholeTextFiles(filePath)
但如果你没有很多这样的文件,看起来就像是开销。