scala读取HDFS上的文件,每次读取一行
2017-07-26 11:14
549 查看
用scala读取一个只有字符的文件,该文件是已经清洗完的数据,有规律,一行是一条数据。 现在的需求是一次读取文件中的一部分,依次读取完。
之前用字节流偶尔出现乱码,最后改成一次读取一行了。
import java.io.{BufferedReader, InputStreamReader} import org.apache.hadoop.fs.FSDataInputStream /** * Created by wx on 2017/7/25. */ object ReadHDFSFileByLine { def main(args: Array[String]) { var inputStream: FSDataInputStream = null var bufferedReader: BufferedReader = null try { /* inputStream = HDFSUtil.getFSDataInputStream("hdfs://master:9000/TestData/aviation7/part-00018") bufferedReader = new BufferedReader(new InputStreamReader(inputStream)) var lineTxt:String=null var count = 1 // 这样写就是死循环,无法跳出,我很郁闷改用下面的就好了 while ((lineTxt= bufferedReader.readLine()) != null) { println(count + "\t" + lineTxt) count += 1 //让程序暂停睡眠一下 Thread.sleep(1) }*/ //获取到HDFS的输入流,可以参考上一篇文档 inputStream = HDFSUtil.getFSDataInputStream("hdfs://master:9000/TestData/aviation7/part-00018") //转成缓冲流 bufferedReader = new BufferedReader(new InputStreamReader(inputStream)) //一次读取一行 var lineTxt: String = bufferedReader.readLine() var count = 1 while (lineTxt != null) { println(count + "\t" + lineTxt) count += 1 lineTxt = bufferedReader.readLine() //让程序暂停睡眠一下 Thread.sleep(1) } } catch { case e: Exception => e.printStackTrace() } finally { if (bufferedReader != null) { bufferedReader.close() } if (inputStream != null) { HDFSUtil.close } } } }
相关文章推荐
- scala读取HDFS文件,每次读取一定的字节数
- scala读取HDFS文件,每次读取一定的字节数
- fgets:从文件结构体指针stream中每次读取一行数据
- shell脚本中每次读取文件的一行
- shell脚本,每次读取文件的一行,逐行读取并处理
- shell脚本,每次读取文件的一行,逐行读取并处理
- [C/C++]_[初级]_[读取文件,每次读取一行并显示]
- 从文件中或控制台每次读取一个单词或一行
- Bash读取文件每次一行
- Scala读取HDFS文件
- Java从hdfs上读取文件中的某一行
- shell脚本:一次读取文件的一行,并输出
- java 从hadoop hdfs读取文件 进行groupby并显示为条形图
- shell:读取文件的每一行内容并输出
- MFC 读取文件的每一行的字符
- 在C++ 重复读取文件中的最后一行的解决办法
- shell读取文件的每一行
- shell读取文件的每一行
- scala学习:Scala文件的读取、写入、控制台输入操作代码
- hive读取与flume写入hdfs文件冲突