spark读取文件夹下的文件名称

我之前遇到过处理日志文件的是文件里面没有日期,日期在文件名上,后来我就上网上搜了搜,发现spark并没有对文件名有过多的解释,但是看到一些文章写的是spark对文件名的操作,领略了下,把自己的想法写出来给大家看看


  def get_hdfs_dir(input: String, sc: SparkContext): Array[String] = {
  
  //创建[LongWritable, Text, TextInputFormat]的rdd
    val fileRDD = sc.newAPIHadoopFile[LongWritable, Text, TextInputFormat](input)
   //获取hadoop的rdd
    val hadoopRDD = fileRDD.asInstanceOf[NewHadoopRDD[LongWritable, Text]]

//通过文件进行分区,然后通过不同分区来获取分区的path
    val fileAdnLine = hadoopRDD.mapPartitionsWithInputSplit((inputSplit: InputSplit, iterator: Iterator[(LongWritable, Text)]) => {
      val file = inputSplit.asInstanceOf[FileSplit]
      iterator.take(1).map(x => {
        file.getPath.toString()   //就是当前数据的所在路径
      })
    })

    val dirOut: Array[String] = fileAdnLine
      .distinct()      //可能会有很多一样的path,进去去重操作
      .coalesce(1)

      // val array: Array[List[Char]] = fileAdnLine    //这里面存放的就是path
      .map(lines => {
      lines.toString  
    })
      .collect()
    dirOut    //dirOut    是一个Array类型的数据里面存放的就是传入文件夹下的路径
  }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值