Scala:将HDFS文件读取为Stream

时间:2018-06-12 15:28:06

标签: scala

我想在scala中阅读HDFS文件。这是一个文本文件,希望在每一行中插入字段默认值。如何逐行读取hdfs文件?

我收到了这段代码:

val hdfs = FileSystem.get(new URI("hdfs://df:port/"), new Configuration()) 
val path = new Path("/dir/fileNm")
val stream = hdfs.open(path)
Stream.cons(stream.read, Stream.continually( stream.read))

但这是逐字节读取的。不推荐使用readLine()。怎么读一条线? 我正在使用scala版本 - 2.11.8

谢谢, Revathy。

3 个答案:

答案 0 :(得分:2)

您可以使用val source = Source.fromInputStream(stream) source.getLines() // Iterator[String]

{{1}}

答案 1 :(得分:0)

我认为你做了类似的事情:

def readLines = Stream.cons(stream.readLine, Stream.continually( stream.readLine))

readLines.takeWhile(_ != null).foreach(line => println(line))

答案 2 :(得分:0)

将内容传递给另一个将由新行字符描绘的函数,然后像往常一样使用该行。有时你必须自己做这项工作。