当前位置: 首页 > 知识库问答 >
问题:

如何在sc.textFile而不是HDFS中加载本地文件

山疏珂
2023-03-14

我正在学习伟大的火花教程

所以我尝试在46m:00s加载自述文件。md但我所做的是:

$ sudo docker run -i -t -h sandbox sequenceiq/spark:1.1.0 /etc/bootstrap.sh -bash
bash-4.1# cd /usr/local/spark-1.1.0-bin-hadoop2.4
bash-4.1# ls README.md
README.md
bash-4.1# ./bin/spark-shell
scala> val f = sc.textFile("README.md")
14/12/04 12:11:14 INFO storage.MemoryStore: ensureFreeSpace(164073) called with curMem=0, maxMem=278302556
14/12/04 12:11:14 INFO storage.MemoryStore: Block broadcast_0 stored as values in memory (estimated size 160.2 KB, free 265.3 MB)
f: org.apache.spark.rdd.RDD[String] = README.md MappedRDD[1] at textFile at <console>:12
scala> val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://sandbox:9000/user/root/README.md
    at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:285)

我如何加载自述文件。md

共有3个答案

金英华
2023-03-14

虽然Spark支持从本地文件系统加载文件,但它要求这些文件在集群中所有节点的同一路径上可用。

一些网络文件系统,如NFS、AFS和MapR的NFS层,作为常规文件系统向用户公开。

如果您的数据已经在其中一个系统中,那么您可以将其用作输入,只需指定一个文件://path;只要文件系统安装在每个节点的相同路径上,Spark就会处理它。每个节点都需要有相同的路径

 rdd = sc.textFile("file:///path/to/file")

如果您的文件还没有在集群中的所有节点上,您可以在本地将其加载到驱动程序上,而无需通过Spark,然后调用并行化将内容分发给工作人员

注意将文件://放在前面,并根据操作系统使用“/”或“\”。

斜单鹗
2023-03-14

冈贝的回答很好。但我还是想提一下文件://=~// ,而不是$SPARK\u HOME。希望这能为像我这样的新手节省一些时间。

洪昱
2023-03-14

尝试显式指定sc.textFile(file:///path to the file/)。设置Hadoop环境时发生错误。

SparkContext。textFile内部调用org。阿帕奇。hadoop。映射。文件输入格式。getSplits,它依次使用org。阿帕奇。hadoop。财政司司长。getDefaultUri如果缺少架构。此方法读取Hadoop conf的“fs.defaultFS”参数。如果设置Hadoop_conf_DIR环境变量,该参数通常设置为hdfs://...否则为“文件://”。

 类似资料:
  • 我一直在尝试使用Spark中的加载本地文件。 我已经读过[问题]:如何在sc.textfile中加载本地文件,而不是HDFS Centos 7.0上中有本地文件 使用时,出现如下错误。 16/12/27 12:15:56警告TaskSetManager:stage 5.0中丢失任务0.0(TID 36,):java.io.FileNotFoundException:File File:/home/

  • 我是Apache Spark的新手,正在尝试从本地文件系统加载文件。我正在学习Hadoop--这是一本权威的指南书。 下面是我设置的环境变量: 下面是我正在执行的命令: 上面的sc.textfile命令有我本地文件系统的路径,但有一些是如何指向hdfs,对于hdfs,我得到了以下错误: 因此,我认为它将指向我的hdfs文件系统,所以我在hdfs中的“/user/hive/warehouse/rec

  • 我想加载一个文件从hdfs到我的本地服务器使用puty,然后重命名,并再次加载回hdfs。我怎么能这样做呢?我需要它的Unix命令。任何帮助将不胜感激。

  • 本文向大家介绍Android 如何本地加载pdf文件,包括了Android 如何本地加载pdf文件的使用技巧和注意事项,需要的朋友参考一下 大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开。 这样的需求要怎么实现呢?上网查了一些资料,发现了一个很好用PDF开源库。 使用起来也很

  • 我正在mac上学习使用chrome的selenium。 我已经设法用以下代码加载谷歌主页。 基于此,我尝试用selenium加载一个本地html文件。 Chrome以奇怪的字符串启动。 得到了这个错误。 回溯(最近一次调用last):文件“/Users/pan/selenium.py”,第11行,在驱动程序中。get(dir_path“/game/dino.html”)File“/Users/pa

  • 我正在尝试将此文件加载到我的webview中,但它没有加载 文件路径类似于 /数据/用户/0/com。xyzapp。应用程序/缓存/临时文件。docx//这是GetPathh 下面是我的代码 第一项活动:- 第二项活动:- 如果我使用Action\u view 我因为“E/UncaughtException:android”而崩溃。操作系统。FileUriExposedException:file