2018/5/9
关于textFile读取文件的问题
问题描述:
今天第一次使用spark-shell来读取文件,我在本地建立了一个text.txt文件,然后用textFile读取生成rdd。
但是执行的时候报错了,提示找不到文件。
解决方法:
1.
首先我们知道,通过文件建立rdd的textFile("file:///")的方法可以填入本地地址和HDFS地址。
我们这里想要用本地文件建立一个rdd,但是是通过spark-shell建立的。
spark-shell默认并不是使用本地模式,而是集群中任意一个节点,我们只有保证那个节点有这个文件才不会报找不到文件的错误。
但是当前spark-shell所有的机器你并不知道,只有你保证所有节点都有你的文件才可以。
这样的解决方法基本上就是无稽之谈。
那么我们如何解决呢?
我们把文件放到HDFS中就行了。
我们在使用HDFS的时候,可以在前边使用hadoop fs 或者 hdfs dfs 作为前缀
hadoop fs -ls / 查看HDFS中的文件目录,HDFS中并没有cd命令,我们只能通过 -ls 找到要使用的文件夹。
hadoop fs -mkdir /tmp/yuhang.zhang/ 在/tmp中建立一个文件夹
hadoop fs -put text.txt /tmp/yuhang.zhan 把本地的text.txt文件传入到HDFS:/tmp/yuhang.zhang 中