Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用

广告部分(首先宣传一下本人的微信公众号,可直接跳过本部分阅读正文):

首席安全官Plus是一个围绕“大数据、云计算和人工智能”高技术领域,发布相关网络安全前沿技术和产业趋势的平台,努力打造“有特色、高水平、国际化”的网络安全思想高地。如投稿,请发送到:[email protected]

                                                                                                  

 

 

Spark默认是从hdfs读取文件,也可以指定sc.textFile("路径")中的路径,在路径前面加上hdfs://表示从hdfs文件系统上读;
本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读,如file:///home/user/spark/README.md。

网上很多例子,包括官网的例子,都是用textFile来加载一个文件创建RDD,类似sc.textFile("hdfs://n1:8020/user/hdfs/input")

textFile的参数是一个path,这个path可以是:

1. 一个文件路径,这时候只装载指定的文件

2. 一个目录路径,这时候只装载指定目录下面的所有文件(不包括子目录下面的文件

3. 通过通配符的形式加载多个文件或者加载多个目录下面的所有文件

第三点是一个使用小技巧,现在假设我的数据结构为先按天分区,再按小时分区的,在hdfs上的目录结构类似于:

/user/hdfs/input/dt=20130728/hr=00/

/user/hdfs/input/dt=20130728/hr=01/

...

/user/hdfs/input/dt=20130728/hr=23/

具体的数据都在hr等于某个时间的目录下面,现在我们要分析20130728这一天的数据,我们就必须把这个目录下面的所有hr=*的子目录下面的数据全部装载进RDD,于是我们可以这样写:sc.textFile("hdfs://n1:8020/user/hdfs/input/dt=20130728/hr=*/"),注意到hr=*,是一个模糊匹配的方式。

你可能感兴趣的:(大数据系统)