0

我正在使用 spark 使用以下代码从 ftp 服务器获取文件

val dataSource = "ftp://<username>:<password>@<host>:<port>/<path>"
sc.addFile(dataSource)
var fileName = SparkFiles.get(dataSource.split("/").last)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
  .format("com.databricks.spark.csv")
  .option("header", "true") // Use first line of all files as header
  .option("inferSchema", "true") // Automatically infer data types
  .option("delimiter", ",")
  .load(fileName)

但我面临转义字符的问题,如“^”、“!”、“@”或“#”等。我尝试使用 HEX ASCII 值作为特殊字符,并尝试通过包围用户名/密码来转义它们例如在转义引号中

val dataSource = "ftp://\'<username>\':\'<password>\'.........

但这也不起作用。谁能向我解释如何在我的 ftp url 中转义这些字符?

PS,当密码不包含任何特殊字符时,此代码确实有效。

4

1 回答 1

1

请记住,这是一个 URL。这意味着它可以包含 % 转义。例如,一个匿名 ftp 站点需要一个电子邮件地址作为密码,所以它看起来像

ftp://anonymous:user%40foo.com@source.com/path/to/file

于 2017-10-22T03:22:42.030 回答