举例实用详解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/") ...
 
随机推荐
- SpringBoot 版本升级后报错 Cannot instantiate interface org.springframework.context.ApplicationContextInitializer
			
本篇博客纯粹讲我遇到这个问题的解决以及思考,如果你想知道解决方法,可以直接看正确解决方案部分.因为是前端写的,所以可能有些明显的内容很容易就看出来了. 首先:升级后更新其他依赖,以及Applicati ...
 - 集训Day1
			
雅礼集训2017Day1的题 感觉上不可做实际上还挺简单的吧 T1 区间加 区间除法向下取整 查询区间和 区间最小值 大力上线段树,把除法标记推到底,加法标记就是按照线段树的来 先拿30 然后60的数 ...
 - P1150 Peter的烟
			
题目描述 Peter有n根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)个烟蒂可以换一个新的烟,那么Peter最终能吸到多少根烟呢? 输入输出格式 输入格式: 每组测试数据一行包括两个整数n( ...
 - Lagom学习 五 Hello world工程
			
用Maven创建一个Hello world的Lagom工程: 1: 在想创建工程的目下下,打开CMD 2: mvn archetype:generate -Dfilter=com.lightbend ...
 - STL::next_permutation();
			
next_permutation()可以按字典序生成所给区间的全排列. 在STL中,除了next_permutation()外,还有一个函数prev_permutation(),两者都是用来计算排列组 ...
 - 双击jar不能运行的解决方法
			
1.问题描述 使用eclipse导出jar.双击jar文件弹出一个内容为“a java exception has occurred”的错误警告提示! 但是在命令行用 java -jar Em ...
 - FZU2056 最大正方形(二分答案)
			
Problem 2056 最大正方形 Accept: 171 Submit: 516Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
 - ZOJ 2671 Cryptography 矩阵乘法+线段树
			
B - Cryptography Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Subm ...
 - idea+tomcat 解决 debug超级慢 问题
			
最近在用intellij idea 开发程序,发现debug的时候启动得特别慢,正常run的时候启动的特别快,相差30多倍. 方法断点会戏剧性的降低debug的速度.当时并没有在意,因为并不清晰这个方 ...
 - POJ - 2955 Brackets括号匹配(区间dp)
			
Brackets We give the following inductive definition of a “regular brackets” sequence: the empty sequ ...