我使用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)
但是我面临着逃避字符的问题,例如&#39; ^&#39;,&#39;!&#39;,&#39; @&#39;或者&#39;#&#39;我尝试使用HEX ASCII值作为特殊字符,并尝试通过在转义引号中包含用户名/密码来逃避它们,例如
val dataSource = "ftp://\'<username>\':\'<password>\'.........
但这也没有奏效。任何人都可以向我解释如何在我的ftp url中逃避这些角色?
P.S。,当密码不包含任何特殊字符时,此代码可以正常工作。
答案 0 :(得分:1)
请记住,这是一个网址。这意味着它可以包含%escapes。例如,匿名ftp站点需要一个电子邮件地址作为密码,因此它看起来像