
20
|
第
2
章
用于过滤集群上整个数据集的语法和过滤本地机器上的
head
数组的语法一模一样。可以用
noheader
这个
RDD
来验证过滤规则是否正确:
noheader.first
...
res: String = 37291,53113,0.833333333333333,?,1,?,1,1,1,1,0,TRUE
这太强大了!它意味着我们可以先从集群采样得到小数据集,在小数据集上开发和调试
数据处理代码,等一切就绪后再把代码发送到集群上处理完整的数据集就可以了。最厉
害的是,我们从头到尾都不用离开
shell
界面。除了
Spark
,还真没有哪种工具能给你这
种体验。
在后面几节中,我们将运用这种本地开发加测试和集群运算的方式,来展示更多处理和分
析记录关联数据的技术。如果你现在想停下来喝口水,感叹一下
Spark
这个新世界的美妙,
我们当然能理解。
2.7
从
RDD
到
DataFrame
本书第
1
版的这一节中,我们介绍了一个新功能:如何在
REPL
中混合使用本地开发和测
试以及集群中的运算。我们写了一段代码,对存储记录关联数据的
CSV
文件进行解析。
代码完成的工作包括:把每一行按照逗号分隔成多个字段,再将每个字段转换成对应的数
据类型(整型或双精度浮点数),并处理非法值。
Spark
的这种处理数据的方式很有吸引
力,特别是在数据集的结构不同寻常或者非标准的情况下,此时其他处理方式并不适用。
不过,我们遇到的大部分数据集都有着合理的结构,要么因为它们本来如此(比如来自数
据库的表),要么因为有人已经对数据做好了清洗和结构化。对这类数据 ...