【问题标题】:Spark SBT program tries to read from local file system instead of hdfs in IntelliJ ProjectSpark SBT 程序尝试从本地文件系统而不是 IntelliJ 项目中的 hdfs 读取
【发布时间】:2016-05-24 20:14:04
【问题描述】:

我安装了 Hadoop (hadoop-2.7.2.tar.gz) 和 Spark (spark-1.6.0-bin-without-hadoop.tgz)。两者都已正确配置,可以一起工作。

我能够遵循 this 动手教程的 scala 版本,以便读取存储在 hdfs 上的文件并应用 ALS 算法给出建议。

但是现在当我尝试在 IntelliJ IDE 中做同样的事情时,我得到了这个错误:

Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/data/movielens/medium

我想我在 IntelliJ 中缺少一些 VM 参数或其他配置,但我不知道它是什么。

谁能解释一下这种行为以及我应该如何解决它?

【问题讨论】:

    标签: scala hadoop intellij-idea apache-spark


    【解决方案1】:

    假设您使用的是基于 linux 的操作系统,您可能需要提供您在本地文件系统中安装数据目录的位置的完整路径。例如

    val movieLensHomeDir = "file:///Users/user/training-downloads/data/movielens/medium"
    sc.textFile(movieLensHomeDir, "ratings.dat")
    

    将此与 hdfs 进行比较,您可能能够在 hdfs 中提供路径,而不是本地文件系统。

    val movieLensHomeDir = "/data/movielens/medium"
    sc.textFile(movieLensHomeDir, "ratings.dat")
    

    the Spark docs indicate:

    要从 Spark 访问 Hadoop 数据,只需使用 hdfs:// URL(通常 hdfs://:9000/path,但您可以在您的 Hadoop Namenode 的 Web UI)。

    val movieLensHomeDir = "hdfs://<namenode>:9000/data/movielens/medium"
    sc.textFile(movieLensHomeDir, "ratings.dat")
    

    【讨论】:

    • 而且有时在使用HDFS的时候需要写域和端口
    • 好点@AlbertoBonsanto,我添加了一个带有名称节点和端口的示例。
    • 感谢@JMaurer,但这需要编辑源代码,而不是我想将数据集文件位置作为命令行参数传递,对此有什么建议吗?我正在使用 Fedora。
    • 尝试传递我在movieLensHomeDir中列出的字符串值作为参数。
    • 试过了,我得到Incomplete HDFS URI, no host错误
    【解决方案2】:

    试试这个

    //this is your input path
    val text_file = sc.textFile("hdfs://...")
    //or 
    val text_file = sc.textFile("your local path") 
    
    //mapping and reduscing 
    val counts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
    
    //output path
    counts.saveAsTextFile("hdfs://...") or
    counts.saveAsTextFile("your local file system path")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      相关资源
      最近更新 更多