【问题标题】:How to ftp a file with SparkContext.textFile?如何使用 SparkContext.textFile ftp 文件?
【发布时间】:2016-02-12 16:35:23
【问题描述】:

我尝试使用此 scala 代码从 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:pandamagic@ftp.ubuntu.com/ubuntu/ls-LR.gz")
    println(file.collect().mkString("\n"))
}
}

运行时出现以下错误。

16/02/12 10:52:22 信息 SparkContext:在 BasicTextFromFTP.scala:14 从 textFile 创建广播 0 线程“主”org.apache.hadoop.mapred.InvalidInputException 中的异常:输入路径不存在:ftp://anonymous:pandamagic@ftp.ubuntu.com/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) 在 org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 在 org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 在 scala.Option.getOrElse(Option.scala:121) 在 org.apache.spark.rdd.RDD.partitions(RDD.scala:237) 在 org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35) 在 org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 在 org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 在 scala.Option.getOrElse(Option.scala:121) 在 org.apache.spark.rdd.RDD.partitions(RDD.scala:237) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1929) 在 org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:927) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111) 在 org.apache.spark.rdd.RDD.withScope(RDD.scala:316) 在 org.apache.spark.rdd.RDD.collect(RDD.scala:926) 在 ftp.BasicTextFromFTP$.main(BasicTextFromFTP.scala:15) 在 ftp.BasicTextFromFTP.main(BasicTextFromFTP.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

我正在使用 spark 1.6.0 和 scala 2.11。

【问题讨论】:

    标签: apache-spark ftp


    【解决方案1】:

    您可以访问此 FTP 网址吗?我不知道有时 FTP 在企业网络中被阻止。您可能想要下载这个 HDFS API 项目 (https://github.com/pppsunil/HelloHDFS) 并从命令行运行它以查看您是否能够获取该文件。您可以在此博客条目http://wpcertification.blogspot.com/2014/07/hdfs-java-client.html 上找到有关该程序的更多信息。如果访问 FTP url 的基本功能不起作用,那就是你的问题,如果不是,那么它可能与 spark 相关

    【讨论】:

    • 在发布这个问题之前,我已经尝试过手动 ftp 和 filezilla。两种方式都有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2012-03-16
    相关资源
    最近更新 更多