我在本地PC上有一个主人,并使用两台服务器作为工人。当我启动Spark程序时,首先我必须导入我的输入文件。对于正确的输入(目前)我应该有我的输入文件在主人和两个工人的硬盘(路径必须是相同的)。这意味着相同的数据集应该放在三个不同的地方。我怎样才能避免这种情况,并将我的数据集存储在独特的地方,而不会出现输入错误?火花,输入文件的路径
回答
为了做到这一点,您需要使用分布式文件系统,如HDFS(Hadoop)。的读取文件的两个实例如下:
tweets = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/a1_tweets.txt") # load data from HDFS
words = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/words*.txt") # load data from HDFS
第一个是一个常规文件读取,而第二个具有*这将导致读取多个文件(就像wholeTextFiles)。
请注意,当您在HDFS中引用文件时,必须指定一个包含主机名(例如scrapper)的完全限定URL。
HDFS中的数据存储在块中并存储在所有数据节点中。有关此文件系统的元数据存储在Namenode上。因此,您将数据传播到不同的节点,并且hadoop会关心节点之间何时以及如何发送块。
如果在运行spark时HDFS和HADOOP_HOME设置正确,你*不需要完全限定的URL,因为HDFS将是默认的FS。 –
是真的,我忘记了。感谢您的提醒! – JorgeGlezLopez
一般要点是让所有工作节点都可以看到文件系统。 (HDFS),MapR文件系统(MapR-FS),Cassandra,OpenStack Swift,Amazon S3,Kudu(取自here)的各种Spark接口。
本地文件系统是您提到的选项之一 - 所有工作人员的几个副本。使用“本地”文件系统的另一种情况是安装网络驱动器或使用诸如NAS或SAN之类的东西。
所有这些方法需要的只是不同的URI输入文件,但都结束了简单的电话
sc.textFile("protocol://path/to/a/file");
- 1. 得到火花hdfs文件路径
- 2. 从火花传输中读取新的s3文件路径
- 3. newHadoopAPI中的多个输入路径以供火花读取Lzo文件
- 4. 空文件输出火花
- 5. `input_file_name`上的过滤器火花路径
- 6. 正火文件路径
- 7. 火花 “基本路径” 选项设置
- 8. 更改输入文件的路径
- 9. 根据输入文件路径的
- 10. 的Python用户输入文件路径
- 11. 火花:如何从火花外壳运行火花文件
- 12. 如何让火花忽略缺少的输入文件?
- 13. 用户输入文件路径
- 14. CSS文件输入隐藏路径
- 15. MLCP输入文件路径问题
- 16. $/FullStackSampleApplication路径不是文件。 (输入InvalidOperationException)
- 17. 在火花传输中写入处理文件
- 18. 如何使用火花从文件系统输入
- 19. HDFS文件作为输入提供给火花Mllib
- 20. 火花余弦相似度(DIMSUM算法)稀疏输入文件
- 21. 火花流多输入kafka dstreams混淆
- 22. JUNIT:从文件路径输入文件中config文件夹
- 23. 文件传输路径
- 24. 火花流文件流
- 25. 尝试获取文件的路径 - 输入类型=文件 - PHP
- 26. 将文件自动上传到路径中的输入文件
- 27. 输入文本,带状假路径,输入文本输出
- 28. 来自文件路径的Java输入和输出流
- 29. 嵌入文件路径名
- 30. 放入文件路径
使用分布式文件系统? – zero323
把你的文件放在hdfs上,然后从spark那里加载。 – Mahendra
@ zero323,Mahendra,非常感谢你 – Guforu