Spark读取HDFS或者AFS等文件系统文件
Spark读取文件有很多方法,我这里主要介绍一下读取非结构化的文件的两种方式,针对多文件读取,单文件读取也是一样的。
方案一:spark的textFile方法,也是最简单的方案,支持通配符,简单好用
String afsFilePath="afs://afs.yun.com/app/file/*/sss*";
// String afsFilePath="afs://afs.yun.com/app/file/text/text.txt";
// String afsFilePath="afs://afs.yun.com/app/file/text/*.log";
// 读取之后的是String类型的Dataframe对象,一般需要转换为RDD去处理更方便
// spark会自动去循环目录下的所有文件,可以通过通配符的方式读取你想要的文件
// 通配符的方式还有很多,我这里就不一一概述了
Dataset<String> stringDataset = spark.read().textFile(afsFilePath);
JavaRDD<String> logLinesStr = stringDataset.javaRDD();
JavaRDD<String> logLinesStr = spark.read().textFile(afsFilePath).javaRDD();
Hadoop支持的通配符与Unix bash相同
表1 通配符及其含义