栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

sc.textFile()默认读取本地系统文件还是HDFS系统文件?

sc.textFile()默认读取本地系统文件还是HDFS系统文件?

文章目录

一、Spark集群拓扑二、做好准备工作

(一)准备本地系统文件(二)准备HDFS系统文件(三)启动HDFS服务 三、以--master=local[*]方式启动spark-shell

(一)尝试读取本地系统文件和HDFS系统上的文件

1、读取本地系统`/home/test.txt`文件创建RDD,不加`file://`2、读取本地系统`/home/test.txt`文件创建RDD,加上`file://`3、读取HDFS系统上的文件`/park/test.txt`,不加`hdfs://master:9000`4、读取HDFS系统上的文件`/park/test.txt`,加上`hdfs://master:9000` (二)根据上述尝试得到结论 四、以--master=spark://master:7077方式启动spark-shell

(一)尝试读取本地系统文件和HDFS系统上的文件

1、读取本地系统`/home/test.txt`文件创建RDD,不加`file://`2、读取本地系统`/home/test.txt`文件创建RDD,加上`file://`3、读取HDFS系统上的文件`/park/test.txt`,不加`hdfs://master:9000`4、读取HDFS系统上的文件`/park/test.txt`,加上`hdfs://master:9000` (二)根据上述尝试得出结论 五、小结

一、Spark集群拓扑

二、做好准备工作 (一)准备本地系统文件

在/home目录里创建test.txt

(二)准备HDFS系统文件

将test.txt上传到HDFS系统的/park目录里
(三)启动HDFS服务

执行命令:start-dfs.sh
三、以–master=local[*]方式启动spark-shell (一)尝试读取本地系统文件和HDFS系统上的文件

以--master=local[*]方式启动spark-shell
1、读取本地系统/home/test.txt文件创建RDD,不加file://

执行命令:val rdd = sc.textFile("/home/test.txt")
执行命令:rdd.collect(),查看RDD的内容
2、读取本地系统/home/test.txt文件创建RDD,加上file://

执行命令:val rdd = sc.textFile("file:///home/test.txt")
执行命令:rdd.collect(),查看RDD的内容
执行命令::quit,退出spark-shell
3、读取HDFS系统上的文件/park/test.txt,不加hdfs://master:9000

执行命令:val rdd = sc.textFile("/park/test.txt")
执行命令:rdd.collect(),查看RDD的内容
报错,因为读取的不是HDFS系统上的文件/park/test.txt,而是本地系统文件/park/test.txt,显然这个文件是不存在的 4、读取HDFS系统上的文件/park/test.txt,加上hdfs://master:9000

执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")
执行命令:rdd.collect(),查看RDD的内容
(二)根据上述尝试得到结论

以--master=local[*]方式启动spark-shell,sc.textFile()默认读取本地系统文件,比如sc.textFile("/home/test.txt")就相当于sc.textFile("file:///home/test.txt"),要访问HDFS系统上的/park/test.txt,必须要写成sc.textFile("hdfs://master:9000/park/test.txt")。 四、以–master=spark://master:7077方式启动spark-shell (一)尝试读取本地系统文件和HDFS系统上的文件

以--master=spark://master:7077方式启动spark-shell
1、读取本地系统/home/test.txt文件创建RDD,不加file://

执行命令:val rdd = sc.textFile("/home/test.txt")
执行命令:rdd.collect(),查看RDD的内容
报错,因为读取的是HDFS系统上的文件/home/test.txt,文件不存在 2、读取本地系统/home/test.txt文件创建RDD,加上file://

执行命令:val rdd = sc.textFile("file:///home/test.txt")
执行命令:rdd.collect(),查看RDD的内容
报错,加上file://,依然说文件/home/test.txt不存在 3、读取HDFS系统上的文件/park/test.txt,不加hdfs://master:9000

执行命令:val rdd = sc.textFile("/park/test.txt")
执行命令:rdd.collect(),查看RDD的内容
4、读取HDFS系统上的文件/park/test.txt,加上hdfs://master:9000

执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")

执行命令:rdd.collect(),查看RDD的内容

执行命令::quit,退出spark-shell

(二)根据上述尝试得出结论

以--master=spark://master:7077方式启动spark-shell,sc.textFile()不能访问本地系统文件,只能读取HDFS系统文件,对于文件/park/test.txt,必须写成hdfs://master:9000/park/test.txt才能访问,否则会报错。 五、小结

如果以 spark-shell --master spark://master:7077方式启动spark-shell,只能读取HDFS系统上的文件,不能读取本地系统文件,而以spark-shell --master=local[*]方式启动spark-shell,既可以读取本地系统文件,加不加file://都可以,还可以访问HDFS系统上的文件,但是必须加上hdfs://master:9000。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号