一、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。



