【发布时间】:2017-06-26 23:05:04
【问题描述】:
我正在监视hdfs 中的目录,如果将文件放入其中,我想检索进入目录的文件的名称并应用模式匹配,以便根据名称对它们进行排序到目前为止我已经能够检索文件路径。它给了我文件名,但我不知道如何进一步进行模式匹配
import org.apache.hadoop.mapreduce.lib.input.{FileSplit, TextInputFormat}
import org.apache.spark.rdd.{NewHadoopRDD}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
object path {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
val sc = new SparkContext(conf)
val fc = classOf[TextInputFormat]
val kc = classOf[LongWritable]
val vc = classOf[Text]
val path :String = "/home/hduser/Desktop/foldername"
val text = sc.newAPIHadoopFile(path, fc ,kc, vc, sc.hadoopConfiguration)
println("++++++++++++++ "+text)
val linesWithFileNames = text.asInstanceOf[NewHadoopRDD[LongWritable, Text]].mapPartitionsWithInputSplit((inputSplit, iterator) => {
val file = inputSplit.asInstanceOf[FileSplit]
println(">>>>>>>>>>>>>>>> "+file.getPath)
iterator.map(tup => (file.getPath, tup._2))
}
)
linesWithFileNames.collect()
}
}
这给了我这样的路径
/home/hduser/Desktop/folder_name/XYZ_123_pqr_abc_FILENAME
我想根据文件名开始应用模式匹配......这里它将基于 XYZ。
任何帮助将不胜感激。
【问题讨论】:
标签: scala hadoop pattern-matching spark-streaming