spark 读取 ftp


class FtpShow(spark: SparkSession, map: Map[String, String]) {
  private val path = map(FtpOptions.PATH).stripPrefix("./")
  private val username = map(FtpOptions.USERNAME)
  private val passwd = map(FtpOptions.PASSWORD)
  private val host = map(FtpOptions.HOST)
  private val port = map.getOrElse(FtpOptions.PORT, "21")
  def getSampleData: String = {
    val ftpUri = s"ftp://${username}:${passwd}@${host}:${port}/${path}"
    spark.sparkContext
      .wholeTextFiles(ftpUri)
      .flatMap(s => s._2.split("\n"))
      .take(DBShow.Num)
      .mkString("\n")
  }
}

这里读取ftp文件的时候我们采用了sc.wholeTextFiles() 方法,若使用textFile() 方法,则会报错“java.io.IOException: Seek not supported”,ftp 的 InputStream 不支持seek(long:Long) 方法


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM