Spark在Hadoop的HDFS中读取数据

Spark在Hadoop的HDFS中读取数据

本文的前提是已经安装了Spark和Hadoop,安装方法可以参考我之前的两篇文章Hadoop安装及配置 —— MacOS High SierraSpark 笔记|教程 —— 安装 (Standalone Ubuntu|Mac)

首先我们从本地系统复制一个样本txt文件(请自行准备)到Hadoop的HDFS中。启动Hadoop,然后进入Hadoop根目录,运行下面命令:

bin/hdfs dfs -copyFromLocal /localPATH/test.txt

或者下面命令也行,两者功能一样

bin/hadoop fs -put /localPATH/test.txt /yourPATHinHDFS

该txt文件会自动复制到你的HDFS中创建的文件夹中,请在http://localhost:50070页面中,点导航栏Utilities >> Browse the file system进入子页面查看。或者也可以在hadoop根目录输入bin/hadoop fs -ls /命令查看。

然后打开spark-shell,输入下面代码:

1
2
scala> val textFile = sc.textFile("hdfs://localhost:9000/yourPATHinHDFS/test.txt")
scala> textFile.collect

就会输出之前txt文件内容的string数组,读取数据成功。

注意:上面代码中的localhost:9000要根据你自己的IP地址和port(端口)决定,可以在Hadoop根目录的etc/hadoop/core-site.xml文件中查找。如果你按照我之前的Hadoop配置教程配置的,就用我的这个就可以。


有一个更加快捷的方法,就是不需要每次在hadoop读取数据输入路径都要加入HDFS的地址,就是让spark启动的时候继承Hadoop的cluster。这样spark可以连接Hadoop的ResourceManager并且读写HDFS。具体做法是,在spark根目录的conf/spark-env.sh文件中加入下面命令:

export HADOOP_CONF_DIR=/usr/local/hadoop-2.8.2/etc/hadoop

上面的路径换成你自己的Hadoop文件的含有configuration文件的路径,一般配置文件是在Hadoop根目录下的/etc/hadoop或者/etc/hadoop/conf里。这样spark启动时就会读取hdfs-site.xml,core-site.xml等的Hadoop配置信息,连接Hadoop。之后在spark根目录的sbin目录下,运行./start-all.sh。然后启动spark-shell,工作路径就是HDFS的路径,不需要在输入IP地址了。

1
2
scala> val textFile = sc.textFile("/yourPATHinHDFS/test.txt")
scala> textFile.collect
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值