没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Databricks的Learning Spark - Lighting-Fast Data Analysis,2015-01-26第一版,作者是Holden Karau, Andy Konwinski, Patrick Wendell, and Matei Zaharia,搞Spark的应该都知道吧。这是翻译的第四章,第三章已上传,发现问题请告知,谢谢。
资源推荐
资源详情
资源评论
I
II
Learning Spark
by Holden Karau, Andy Konwinski, Patrick Wendell, and Matei Zaharia
Copyright © 2015 Databricks. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (
http://safaribooksonline.com
). For more information, contact our
corporate/
institutional sales department: 800-998-9938 or
corporate@oreilly.com
.
Editors:
Ann Spencer and Marie Beaugureau
Production Editor:
Kara Ebrahim
Copyeditor:
Rachel Monaghan
Proofreader:
Charles Roumeliotis
Indexer:
Ellen Troutman
Interior Designer:
David Futato
Cover Designer:
Ellie Volckhausen
Illustrator:
Rebecca Demarest
February 2015: First Edition
Revision History for the First Edition
2015-01-26: First Release
See
http://oreilly.com/catalog/errata.csp?isbn=9781449358624
for release details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc.
Learning Spark
, the cover image of a
small-spotted catshark, and related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the authors have used good faith efforts to ensure that the information and
instructions contained in this work are accurate, the publisher and the authors disclaim all responsibility
for errors or omissions, including without limitation responsibility for damages resulting from the use of
or reliance on this work. Use of the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or describes is subject to open source
licenses or the intellectual property rights of others, it is your responsibility to ensure that your use
thereof complies with such licenses and/or rights.
III
译序
嗯,姑且腆着脸叫译序吧。
因为之前工作忙也没顾上看病,后来严重了,被迫割了一刀。所以现在闲赋在家,看看书,
顺便就写下来吧,也算没白看。因为医生不建议久坐,所以我是站在电脑面前打字的,敲的
有点慢,站久了腿疼,你懂的。不过我会努力的,争取恢复上班前把第三章至第九章翻译完。
下面说点正经的。请注意:翻译的 Learning Spark 是 2015 年出版的第一版,不是之前的预
览版,详见封面和第二页的出版信息,对照原文的时候不要弄错。翻译的时候,我尽量保持
内容和原作所在的页码一致,方便各位对照原文帮我纠错。
很明显英语不是我的母语,所以翻译的不正确请原谅,我只能说我尽力了,谢谢!当然,如
果你愿意告诉我哪里错了,那真是太感谢了,好人一生平安~!
如果有啥要指教我的,可以 email: coding_hello@126.com
有更新的话,会放在我的 CSDN 博客: http://blog.csdn.net/coding_hello/article/
或者直接在 CSDN 资源里搜书名吧,那里也会放一份方便查找下载的。
祝各位阅读愉快,工作之余注意身体!
对了,看别人的译著好像一般也都有个感谢的部分会开个单章。现在内容也不全,我就不开
单章感谢了,但是仍然要感谢下我的爸妈,辛苦把我拉扯大了现在还要照顾我这病号。确实
应该去相亲找个媳妇了,一把年纪了还要父母来照顾。
唉,loser!不多说了,我得去各大婚恋网站看看收件箱里有咩妹纸对我有兴趣~
咦,那个妹纸,不要走啊,了解一下嘛~~ 都能谈啊~~ 喂~ 喂喂~~~
47
第四章
处理键值对(Key/Value Pairs)
本章介绍如何处理键值对,这是 Spark 中常见的一种数据类型。键值对 RDD 通
常用于聚合操作,也经常会将一些初始 ETL(提取,转换,加载)获取的数据保存
为键值对的格式。键值对的 RDD 也暴露了一些新的操作(比如每个产品的评价
计数,按相同的键对数据进行分组,对两个不同的 RDD 分组)。
我们也会讨论一个键值对 RDD 的高级特征:分区(partitioning),使用户可以跨节
点控制 RDD 的布局。通过可控的分区,应用程序有时可确保数据在同一个机器
上,可以集中访问,就可以大量的减少通信的开销,以此获得显著的提速。我们
会用一个 PageRand 算法的例子来阐述分区。选择正确的分区对于分布式系统来
说就和本地程序选择正确的数据结构类似,这两者都说明数据的布局对性能的影
响非常大。
动机
Spark 为包含键值对的 RDD 提供了一些特殊的操作。这种 RDD 被称之为 pair
RDD。Pair RDD 在许多程序中都是很有用的组件,因为它们对外的操作可以让
你并行的处理每个键,或者跨网络重组数据。例如,Pair RDD 有一个 reduceByKey()
的方法,它可以对每个键的数据分别进行聚合;join()方法可以通过对两个 RDD
中相同的元素进行分组合并。从 RDD 中抽取字段(例如事件的事件,客户 ID
或者其他标识)并用这些字段作为 pair RDD 的键进行处理是很常见的。
48
创建
Pair RDD
Spark
中有多种方式能得到
pair RDD
。在第五章中我们要探索的很多格式加载时
都可以直接的返回其键值数据为 pair RDD。另外,我们有一个普通 RDD 想要转
换为 pair RDD,可以通过 map()操作来返回键值对。通过代码来看个例子,从一
个包含文本行的 RDD 开始,用每一行的第一个单词作为 key。
这种方式构造键值
RDD
会根据编程语言有些不同。在
Python
中,为了处理有
key 的数据,我们需要返回 tuple 组成的 RDD(见示例 4-1)。
示例
4-1 Python
中使用第一个单词做
key
来创建
pair RDD
pairs = lines.map(lambda x: (x.split(" ")[0], x))
在 Scala 中,为了处理有 key 的数据,我们同样需要返回 tuple(见示例 4-2)。
tuple 类型的 RDD 存在隐式转换,可以提供附加的键值函数。
示例
4-2 Scala
中使用第一个单词做
key
来创建
pair RDD
val pairs = lines.map(x => (x.split(" ")(0), x))
Java
没有内置的
tuple
类型,所以
Spark
的
Java API
有一个用户创建的
scala.Tuple2
类。该类很简单:
Java
用户可以编写
new Tuple2(elem1, elem2)
来创建一个新
tuple
,
然后用._1()和._2()方法来访问 tuple 中的元素。
Java 用户在创建 pair RDD 时同样需要调用特殊版本的 Spark 函数。比如用
mapToPair()
替换基本函数
map()
,在
43
页的“
JAVA
”部分有更多讨论。不过可
以看一个简单的示例 4-3。
示例
4-3 Java
中使用第一个单词做
key
来创建
pair RDD
PairFunction<String, String, String> keyData =
new PairFunction<String, String, String>() {
public Tuple2<String, String> call(String x) {
return new Tuple2(x.split(" ")[0], x);
}
};
JavaPairRDD<String, String> pairs = lines.mapToPair(keyData);
在 Scala 和 Python 中,当从内存中的的集合创建 pair RDD,我们只需要对集合
剩余26页未读,继续阅读
资源评论
野男孩
- 粉丝: 450
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Spring Cloud商城项目专栏 049 支付
- sensors-18-03721.pdf
- Facebook.apk
- 推荐一款JTools的call-this-method插件
- json的合法基色来自红包东i请各位
- 项目采用YOLO V4算法模型进行目标检测,使用Deep SORT目标跟踪算法 .zip
- 针对实时视频流和静态图像实现的对象检测和跟踪算法 .zip
- 部署 yolox 算法使用 deepstream.zip
- 基于webmagic、springboot和mybatis的MagicToe Java爬虫设计源码
- 通过实时流协议 (RTSP) 使用 Yolo、OpenCV 和 Python 进行深度学习的对象检测.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功