举例实用详解sc.textFile()和wholeTextFiles()
谈清楚区别,说明白道理,从案例开始:
1 数据准备
用hdfs存放数据,且结合的hue上传准备的数据,我的hue截图:


每个文件下的数据:



以上是3个文件的数据,每一行用英文下的空格隔开;
2 测试 sc.textFile()和sc.wholeTextFiles()的效果
testFIle() 如图:

wholetextFiles() 如下图:

注意 一定要仔细观察红色方框圈起来的差异,经过以上两次截图中实验的对比,我们得出重要的结论:
sc.textFiles(path) 能将path 里的所有文件内容读出,以文件中的每一行作为一条记录的方式,
文件的每一行 相当于 List中以 “,”号 隔开的一个元素,因此可以在每个partition中用for i in data的形式遍历处理Array里的数据;
而使用 sc.wholeTextFiles()时:
返回的是[(K1, V1), (K2, V2)...]的形式,其中K是文件路径,V是文件内容,这里我们要注意的重点是:
官方一句话:''Each file is read as a single record'' 这句话,每个文件作为一个记录!这说明这里的 V 将不再是 list 的方式为你将文件每行拆成一个 list的元素,
而是将整个文本的内容以字符串的形式读进来,也就是说val = '...line1...\n...line2...\n'
这时需要你自己去拆分每行!而如果你还是用for i in val的形式来便利 val那么i得到的将是每个字符.
3 两种读取文件下与partition的数量关系
理论后总结,先上2张实用数据测试截图:


从上面的操作来看,总结如下:
用textFile时,它的partition的数量是与文件夹下的文件数量(实例中用3个xxx.log文件)相关,一个文件就是一个partition(既然3个文件就是:partition=3)。
wholeTextFiles的partition数量是根据用户指定或者文件大小来(文件内的数据量少 有hdfs源码默认确定的)确定,与hdfs目录下的文件数量无关! 所以说:wholeTextFile通常用于读取许多小文件的需求。
!!如有更好的意见,欢迎留言交换!!
举例实用详解sc.textFile()和wholeTextFiles()的更多相关文章
- linux dd命令实用详解
linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...
- c# webapi2 实用详解
本文介绍webapi的使用知识 发布webapi的问题 配置问题 webapi的项目要前端访问,需要在web.config配置文件中添加如下配置 在system.webServer节点下面添加 < ...
- tar命令的实用详解(C参数和排除文件 --exclude)
一.tar:从压缩包中解压出指定文件 [root@d176 test]# tar ztf nrpe-2.12.tar.gz |grep srcnrpe-2.12/src/nrpe-2.12/src/. ...
- centos6.5环境下svn服务器和客户端配置实用详解
一.服务器端配置 安装 # yum install -y subversion yum安装软件,不清除软件包的方法 # vim /etc/yum.conf keepcache=0 建立svn版本库数据 ...
- Instrument 实用详解
苹果:Instruments User Guide iPhone Memory Debugging with NSZombie and Instruments 苹果:Mac OS X Debuggin ...
- iOS模式详解—「runtime面试、工作」看我就 🐒 了 ^_^.
Write in the first[写在最前] 对于从事 iOS 开发人员来说,当提到 ** runtime时,我想都可以说出来 「runtime 运行时」和基本使用的方法.相信很多开发者跟我当初一 ...
- [转]js中几种实用的跨域方法原理详解
转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...
- iOS 多线程之NSOperation篇举例详解
这篇博客是接着总篇iOS GCD NSOperation NSThread等多线程各种举例详解写的一个支篇.总篇也包含了此文的链接.本文讲解的知识点有NSBlockOperationClick,队列, ...
- sc.WholeTextFiles与sc.textFile区别
val data1 = sc.wholeTextFiles("/opt/test")val data = sc.textFile("/opt/test/") ...
随机推荐
- SSH中的Hibernate
SSH中的Hibernate 就是DAO连接数据库对数据进行实际操作,做了架构简化,对数据库的操作.
- 【Lintcode】018.Subsets II
题目: Given a list of numbers that may has duplicate numbers, return all possible subsets Notice Each ...
- Vijos1221:神秘的配方
背景 每天中午的下课铃一响,浙江镇海中学的同学们都会冲出学校来附近的小饭馆吃饭,刹那间天昏地暗,飞砂走石,家家餐馆内都是一片黑压压的人 .馄饨店.饺子馆,在学校附近开一家红一家.身为镇海中学信息中心首 ...
- 用fpm模式在虚拟主机上安装phpmyadmin
实验环境:CentOS7 1.配置虚拟主机 [root@conf.d localhost]#vi /etc/httpd/conf.d/vhost.conf #配置在/etc/httpd/conf.d下 ...
- Collection与Map总结
顺序表和链表统称为线性表:顺序表一般表现为数组,如:ArrayList的实现;链表有单链表.双链表.循环链表的区分,如:LinkedArrayList由双链表+哈希表实现
- CF-851B
B. Arpa and an exam about geometry time limit per test 2 seconds memory limit per test 256 megabytes ...
- HDU - 4284 Travel(floyd+状压dp)
Travel PP loves travel. Her dream is to travel around country A which consists of N cities and M roa ...
- MVC+Linq+EF笔记
using (DataContext ctx = new DataContext()) { /*foreach (var item in ctx.employees) { ViewData[" ...
- 组合外键(FOREIGN KEY)
一张表,它的外键即是参考另一张表的主键,但这些关联键是组合键,由2列或多列组成. 你可以先看看这篇<多列组合为主键(PRIMARY KEY)>https://www.cnblogs.com ...
- pandas基础(2)_多重索引
1:多重索引的构造 >>> #下面显示构造pd.MultiIndex >>> df1=DataFrame(np.random.randint(0,150,size= ...