2016-02-12 172 views
-3

我試過這個scala代碼從ftp站點下載文件。代碼如下。如何用SparkContext.textFile ftp文件?

object BasicTextFromFTP { 
def main(args: Array[String]) { 
    val conf = new org.apache.spark.SparkConf().setAppName("FTP Test") 
    conf.setMaster("local") 
    val sc = new SparkContext(conf) 
    val file = sc.textFile("ftp://anonymous:[email protected]/ubuntu/ls-LR.gz") 
    println(file.collect().mkString("\n")) 
} 
} 

當我運行它時出現以下錯誤。

16/02/12 10時52分22秒INFO SparkContext:在從BasicTextFromFTP.scala TEXTFILE創建廣播0:在螺紋14 異常 「主」 org.apache.hadoop.mapred.InvalidInputException:輸入路徑確實不存在:ftp://anonymous:[email protected]/ubuntu/ls-LR.gz 在org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:251) 在org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270) 在org.apache。 spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:199) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:239) at org.apache.spark.rdd。 RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:237) at org.apache.spark.rdd.RDD.partitions(RDD.scala:237) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD。)中的scala.Option.getOrElse(Option.scala:121) scala:35) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply(RDD.scala:239) at org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply( RDD.scala:237) at org.apache.spark.rdd.RDD.partitions(RDD.scala:237) at org.apache.spark.SparkContext。scala.Option.getOrElse(Option.scala:121) 運行作業(SparkContext.scala:1929) at org.apache.spark.rdd.RDD $$ anonfun $ collect $ 1.apply(RDD.scala:927) at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope .scala:150) at org.apache.spark.rdd.R DDOperationScope $ .withScope(RDDOperationScope.scala:111) at org.apache.spark.rdd.RDD.withScope(RDD.scala:316) at org.apache.spark.rdd.RDD.collect(RDD.scala:926 ) 在ftp.BasicTextFromFTP $。主要(BasicTextFromFTP.scala:15) 在ftp.BasicTextFromFTP.main(BasicTextFromFTP.scala) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution .application.AppMain.main(AppMain.java:144)

我使用spark 1.6.0和scala 2.11。

回答

1

你能訪問這個FTP網址嗎?我不知道有時FTP在企業網絡中被阻止。您可能需要下載此HDFS API項目(https://github.com/pppsunil/HelloHDFS)並從命令行運行它,以查看您是否能夠獲取該文件。 YOu可以在此博客條目http://wpcertification.blogspot.com/2014/07/hdfs-java-client.html上找到有關該計劃的更多信息。如果訪問FTP網址的基本功能不起作用那麼這就是你的問題,如果不是那麼它可能是相關的火花

+0

我已經嘗試手動ftp和filezilla之前,我發佈此問題。兩種方式都有效。 –