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