描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121309052
√ 窥全貌而知路径——整合Linux|Python|SQL|Hadoop|Hive|Spark|数据挖掘|机器学习|深度学习
√ 知原理而致应用——全栈数据既指数据技术,也指业务数据,生产环境是*终的检验场。
√ 立平台而生数据——建设强大数据平台,是支撑产品也业务的必由之路。
前言 自强不息,厚德载物 / XIX
0x1 Linux,自由之光 / 001
0x10 Linux,你是我的眼 / 001
0x11 Linux基础,从零开始 / 003
01 Linux之门 / 003
02 文件操作 / 004
03 权限管理 / 006
04 软件安装 / 008
05 实战经验 / 010
0x12 Sed与 Grep,文本处理 / 010
01 文本工具 / 010
02 grep的使用 / 011
03 grep家族 / 013
04 sed的使用 / 014
05 综合案例 / 016
0x13 数据工程, Shell / 018
01 Shell分析 / 018
02 文件探索 / 019
03 内容探索 / 020
04 交差并补 / 020
05 其他常用的命令 / 021
06 批量操作 / 022
07 结语 / 025
0x14 Shell 快捷键,Emacs 之门 / 025
01 提高效率 / 025
02 光标移动 / 026
03 文本编辑 / 027
04 命令搜索 / 028
05 Emacs 入门 / 029
06 Emacs 思维 / 031
0x15 缘起Linux,一入Mac 误终身 / 032
01 开源生万物 / 032
02 有钱就换Mac / 032
03 程序员需求 / 033
04 非程序员需求 / 034
05 一入Mac 误终身 / 035
0x16 大成就者,集群安装 / 036
01 离线安装 / 036
02 Host 与SSH 配置 / 037
03 sudo 与JDK 环境 / 039
04 准备Hadoop 包 / 040
05 开启HTTP 与配置源 / 041
06 安装ambari-server / 041
07 后续服务安装 / 042
08 结语 / 044
0x2 Python,道法自然 / 045
0x20 Python,灵犀一指 / 045
0x21 Python 基础,兴趣为王 / 047
01 语言 / 047
02 数据结构 / 047
03 文件读写 / 049
04 使用模块 / 050
05 函数式编程 / 052
06 一道面试题 / 053
07 兴趣驱动 / 055
0x22 喜新厌旧,2迁移 3 / 056
01 新旧交替 / 056
02 基础变化 / 057
03 编码问题 / 058
04 其他变化 / 058
05 2to3脚本 / 060
06 PySpark配置 / 061
07 喜新厌旧 / 062
0x23 Anaconda,IPython / 062
01 Anaconda / 062
02 安装与配置 / 063
03 pip与源 / 064
04 IPython与 Jupyter / 065
05 结语 / 067
0x24 美不胜收,Python工具 / 067
01 缘起 / 067
02 调试与开发 / 068
03 排版与格式化 / 070
04 辅助工具 / 072
05 实用推荐 / 074
0x25 numpy基础,线性代数 / 075
01 numpy的使用 / 075
02 索引与切片 / 076
03 变形与统计 / 078
04 矩阵运算 / 080
05 实用方法 / 083
06 结语 / 085
0x26 numpy实战,PCA降维 / 085
01 PCA介绍 / 085
02 数据均值化 / 086
03 协方差矩阵 / 087
04 特征值与向量 / 088
05 数据映射降维 / 089
06 sklearn 实现 / 090
0x3 大数据,其大无外 / 093
0x30 太大数据,极生两仪 / 093
0x31 神象住世,Hadoop / 095
01 Hadoop / 095
02 HDFS / 096
03 角色与管理 / 097
04 文件操作 / 098
05 结语 / 100
0x32 分治之美,MapReduce / 100
01 map 与reduce 函数 / 100
02 分而治之 / 102
03 Hello,World / 103
04 Streaming 接口 / 105
0x33 Hive 基础,蜂巢与仓库 / 106
01 引言 / 106
02 Hive 接口 / 107
03 分区建表 / 108
04 分区机制 / 110
05 数据导入/ 导出 / 111
06 Hive-QL / 112
07 结语 / 114
0x34 Hive 深入,实战经验 / 115
01 排序与分布式 / 115
02 多表插入与mapjoin / 116
03 加载map-reduce 脚本 / 117
04 使用第三方UDF / 119
05 实战经验 / 120
06 生成ID / 121
0x35 HBase库,实时业务 / 122
01 理论基础 / 122 02 Shell操作 / 123 03 关联 Hive表 / 126 04 数据导入 / 128 05 实用经验 / 130
0x36 SQL与 NoSQL,Sqoop为媒 / 130
01 SQL与 NOSQL / 130 02 从 MySQL导入 HDFS / 131 03 增量导入 / 134 04 映射到 Hive / 135 05 导入 Hive表 / 136 06 从 HDFS导出到 MySQL / 137 07 从 Hive导出到 MySQL / 138
0x4 数据分析,见微知著 / 141
0x40 大数据分析,鲁班为祖师 / 141 0x41 SQL技能, MySQL / 143
01 SQL工具 / 143 02 基础操作 / 144 03 查询套路 / 145 04 join查询 / 146 05 union与 exists / 149 06 实战经验 / 151
0x42 快刀 awk,斩乱数据 / 152
01 快刀 / 152 02 一二三要点 / 152 03 一个示例 / 154 04 应用与统计 / 154 05 斩乱麻 / 156
0x43 Pandas,数据之框 / 157
01 数据为框 / 157
02 加载数据 / 158
03 行列索引 / 159
04 行列操作 / 161
05 合并聚合 / 163
06 迭代数据 / 164
07 结语 / 165
0x44 Zeppelin,一统江湖 / 166
01 心潮澎湃 / 166
02 基本使用 / 168
03 SQL 与可视化 / 169
04 安装Zeppelin / 172
05 配置Zeppelin / 173
06 数据安全 / 174
07 使用心得 / 176
0x45 数据分组,聚合窗口 / 177
01 MySQL 聚合 / 177
02 Spark 聚合 / 178
03 非聚合字段 / 179
04 Hive 实现 / 180
05 group_concat / 181
06 Hive 窗口函数 / 183
07 DataFrame 窗口 / 184
08 结语 / 185
0x46 全栈分析,六层内功 / 186
01 引言 / 186
02 MySQL 版本 / 186
03 awk 版本 / 187
04 Python 版本 / 188
05 Hive 版本 / 189
06 map-reduce 版本 / 190
07 Spark 版本 / 190
08 结语 / 191
0x5 机器学习,人类失控 / 193
0x50 机器学习,琅琊论断 / 193 0x51 酸酸甜甜,Orange / 195
01 可视化学习 / 195 02 数据探索 / 196 03 模型与评估 / 199 04 组件介绍 / 200 05 与 Python进行整合 / 202 06 结语 / 204
0x52 sklearn,机器学习 / 205
01 sklearn介绍 / 205 02 数据预处理 / 206 03 建模与预测 / 207 04 模型评估 / 209 05 模型持久化 / 210 06 三个层次 / 210
0x53 特征转换,量纲伸缩 / 211
01 特征工程 / 211 02 独热编码 / 212 03 sklearn示例 / 213 04 标准化与归一化 / 215 05 sklearn与 Spark实现 / 216 06 结语 / 219
0x54 描述统计,基础指标 / 220
01 描述性统计 / 220 02 Pandas实现 / 222 03 方差与协方差 / 223 04 Spark-RDD实现 / 224 05 DataFrame实现 / 226 06 Spark-SQL实现 / 227 07 结语 / 227
0x55 模型评估,交叉验证 / 228
01 测试与训练 / 228
02 评价指标 / 229
03 交叉验证 / 231
04 验证数据 / 232
05 OOB 数据 / 233
0x56 文本特征,词袋模型 / 234
01 自然语言 / 234
02 中文分词 / 235
03 词袋模型 / 236
04 词频统计 / 237
05 TF-IDF / 238
06 结语 / 239
0x6 算法预测,占天卜地 / 241
0x60 命由己做,福自己求 / 241
0x61 近朱者赤,相亲kNN / 243
01 朴素的思想 / 243
02 算法介绍 / 243
03 分类与回归 / 244
04 k 与半径 / 245
05 优化计算 / 246
06 实例应用 / 247
0x62 物以类聚,Kmeans / 248
01 算法描述 / 248
02 建立模型 / 249
03 理解模型 / 251
04 距离与相似性 / 252
05 降维与可视化 / 253
06 无监督学习 / 255
0x63 很傻很天真,朴素贝叶斯 / 257
01 朴素思想 / 257
02 概率公式 / 257
03 三种实现 / 258
04 sklearn 示例 / 260
05 朴素却不傻 / 262
0x64 菩提之树,决策姻缘 / 263
01 缘起 / 263 02 Orange演示 / 264 03 scikit-learn模拟 / 266 04 熵与基尼指数 / 267 05 决策过程分析 / 268 06 Spark模拟 / 270 07 结语 / 271
0x65 随机之美,随机森林 / 271
01 树与森林 / 271 02 处处随机 / 273 03 sklearn示例 / 274 04 MLlib示例 / 275 05 特点与应用 / 276
0x66 自编码器,深度之门 / 277
01 深度学习 / 277 02 特征学习 / 278 03 自动编码器 / 280 04 Keras代码 / 282 05 抗噪编码器 / 283
0x7 Spark,唯快不破 / 285
0x70 人生苦短,快用 Spark / 285 0x71 PySpark之门,强者联盟 / 287
01 全栈框架 / 287 02 环境搭建 / 288 03 分布式部署 / 289 04 示例分析 / 290 05 两类算子 / 292 06 map与 reduce / 293 07 AMPLab的野心 / 294
0x72 RDD 算子,计算之魂 / 295
01 算子之道 / 295
02 获取数据 / 296
03 过滤与排序 / 297
04 聚合数据 / 298
05 join 连接 / 299
06 union 与zip / 300
07 读写文件 / 301
08 结语 / 303
0x73 分布式SQL,蝶恋飞舞 / 304
01 SQL 工具 / 304
02 命令行CLI / 304
03 读Hive 数据 / 305
04 将结果写入Hive / 306
05 读写MySQL 数据 / 307
06 读写三种文件 / 308
0x74 DataFrame,三角之恋 / 310
01 DataFrame / 310
02 生成数据框 / 311
03 合并与join / 313
04 select 操作 / 314
05 SQL 操作 / 315
06 自定义UDF / 316
07 三角之恋 / 318
0x75 神器之父,Scala 入世 / 319
01 Spark 与Scala / 319
02 Scala REPL / 320
03 编译Scala / 321
04 sbt 编译 / 322
05 示例分析 / 323
06 编译提交 / 325
0x76 机器之心,ML 套路 / 326
01 城市套路深 / 326
02 算法与特征工程 / 327 03 管道工作流 / 328 04 OneHotEncoder示例 / 329 05 ML回归实战 / 331 06 特征处理与算法 / 332 07 拟合与评估 / 334
0x8 数据科学,全栈智慧 / 337
0x80 才高八斗,共分天下 / 337 0x81 自学数据,神蟒领舞 / 339
01 机器学习 / 339 02 语言领域 / 339 03 Python数据生态 / 340 04 相关资料 / 341 05 书籍推荐 / 342 06 性感的职业 / 343
0x82 数据科学,七大技能 / 343
01 七大技能 / 343 02 SQL与 NoSQL技能 / 344 03 Linux工具集 / 344 04 Python或者 R语言生态 / 345 05 Hadoop与 Spark生态 / 345 06 概率、统计与线性代数 / 34
0x00 自序
慈悲为怀大数据,云中仙游戒为师。这是自己从几年前一直沿用到现在的签名,几年之后的今天,再来体会这句话,不一样的处境,不一样的心境,却依然有着同样的追求。曾想出世修行,渴望每日有高山流水相伴,能过着青灯古佛的生活。终因现实残酷只得入世而求存,在多少次碌碌无为中坚定了技术这条路。技术之路,注定会一波三折。在下也经历了从安全测试、安全分析,到大数据分析,再到 APP后端开发,直至数据分析、机器学习与深度学习之后,技术之栈才得以完全确立。技术之路漫长而曲折,需要不断修行,目前我也仅仅是入得门内,自此方有机会窥探神秘数据世界之一二而已。少年不识愁滋味,为赋新词强说愁。而今识尽愁滋味,却道天凉好个秋。学无止境。曾经以为学会 Linux便够了,殊不知,这仅仅是系统的基础;后来学了 Python,以为这便是编程的全部;殊不知, Python强大的领域在数据科学;直到接触大数据与机器学习,才发现,原来种种际遇,都只是为数据科学而铺设的“套路”。
本书并非从入门到精通的讲解,只是想通过浅显易懂的语言让读者了解全栈数据的全貌。阅读本书时,如果其中某个知识点,让你入了门,我甚感欣慰;如果其中某节内容,让你得到了提高,我备受鼓舞。另外,入门之路千千万,用时下流行的话来说,只希望本书不会导致你“从入门到放弃”。
全栈数据,主要想尽可能多地涉及数据科学中的主题。任何复杂的技术,都是一点点积累起来的,数据科学也不例外。如果能将本书中涉及的全栈数据技术,如 Linux、Python、SQL、Hadoop、Hive、Spark、数据挖掘、机器学习与深度学习进行系统性整合,则全栈数据之技可成也。
诗词歌赋,是诗人与词人对人生的情感寄托;技术写作,也是技术人员对技术的情感寄托。
然术业有专攻,每个人的知识都是有限的,写书的目的,并非要证明自己,而是把自己所知所想记录下来,让读者能有哪怕一小点的收获即可。
全栈并非全能,钱都不是的,何况技术乎?在数据领域,都懂一点,生活会更美好。
全栈是一种修行,数据技术如此,人生亦如是:
阅读本书,不能让你立刻走上人生、出任 CEO……但至少可以达到以下几点:
本书是一本无固定主题的技术文集合体,围绕“数据”这个主线,进行了大量的展开,从不同的侧面去靠近全栈数据技能,去靠近数据科学这个大主题。因内容宽泛,且作者水平有限,不足之处甚多,若读者发现书中的问题,还望不吝指正。可以通过我的微信公众号 yunjie-talk反馈问题,我将不胜感激。
后,本书得以成册出版,必须要感谢电子工业出版社计算机出版分社的张春雨老师,伯乐张老师于杂乱文字中,发现了闪光之处,促成了本书的问世。世人皆说本书体裁太乱,无章法可言,唯张伯乐以无招胜有招接下,众皆信服。
本书在写作过程中,得益于爱妻梁玉霞女士的大力支持,常于深夜端茶倒水,询问进度,并且照顾家庭与小孩,让我可以抽出大量时间来书写,感激之情在心,在此道谢。与此同时,也感谢全力支持我写作的父母,他们帮忙照顾小孩与生活,对我学业、事业与写作的支持,让我感恩。
另外,本书在写作过程中,得到好友司旭鹏的很多支持与建议,在初稿审校过程中,得到好友尹高峰、卢西、彭玺锦的很多建议与修改,在此一并感谢。因为你们的付出,让本书质量得到了提升,非常感谢。
在写作本书的约一年时间之内,还得到了其他很多朋友、同事的大量建议,在此虽不一一提名,但必须要感谢你们的支持。
云戒2016.11.11 于成都
前言 自强不息,厚德载物
本书共有 8个章节的内容,涉及数据科学中的相关基础知识与内容,但内容的编排并非完全从易到难,有部分文章的内容,是需要用到其他章节的知识的。
相对来说,第 1、2、3章,内容比较单一,涉及基础的 Linux、Python与 Hadoop知识。如果对这三章中的某些知识不熟悉,建议先阅读。第 4章比较特殊,其内容也是数据科学中比较重要的,不仅需要前 3章的知识,也需要部分 Spark的知识,因为 Spark的特殊性,单独放到机器学习之后了。
第 5、6章,涉及数据科学中重要的主题:机器学习与算法,介绍了机器学习的常用环境、概念、方法以及几个典型的算法应用。这两章是本书的难点,如果不熟悉,必须单独攻克。
第 7章,Spark本身就是一个全栈框架,无论是在分布式计算还是在机器学习领域,都大有用处。因此好有前面章节的基础知识,方能更好地理解本章的内容,尤其是 MLlib/ML库,必须有机器学习算法的知识。
后一章,反而是简单的,因为基本不涉及技术细节,但对整个数据科学的理解,以及技术积累都是非常重要的。
本书章节的编排,在一定程度上参考了知识的由易到难,另外一个方面,也参考了《易经》的乾坤两个卦象。不需要读者熟悉乾坤两个卦象,下面会将其中乾坤两个卦的爻辞进行粗略的解释。不需要读者完全理解,只求有个概念上的认识即可。
全栈数据,其中的数据既指数据技术,也指业务数据。只有将技术应用到业务中,才能在实际的生产环境中发挥作用。
介绍卦象的时候,是由低层次向高层次渐渐提升的,对应的技能与业务也一样。从 Linux走向数据科学,就是一个技能提升的过程,类似的,从数据采集到数据应用也是对业务从入门到应用的一个过程。
01 全栈技能,自强不息
乾坤为一体,况且一阴一阳之谓道。世界上不可能只有男人而没有女人,正如不可能只有女神而没有女汉子一样。因此,和纯阳卦乾卦相对的便是纯阴卦坤卦了。
乾卦,正是天行健,君子以自强不息。下面先用乾卦来说全栈技术。
1.1 Linux,潜龙勿用
初九爻,爻辞为:潜龙勿用。
乾卦每一爻都代表了一条龙,初九爻为潜龙。潜字很有意思,是叫你要藏起来,不要露面,那能干什么呢?
刚接触 Linux,觉得 Linux非常自由。此时刚开始入门,兴趣重要,这一阶段,需要打好各种系统与命令行的基础。
要做好数据科学,不学 Linux不行,不论你喜欢与否。后续的 Python、 Spark、Hadoop、数据挖掘等都需要用到大量基础的 Linux知识。勿用的意思是,时候不到就不要用,当准备好了,就要用。
Linux只是一个基础系统,必须要结合实际的业务来更好地应用,“勿用”到后就是为了要用,此时就进入了第二阶段。
1.2 Python,见龙在田
九二爻,爻辞为:见龙在田,利见大人。
见(xiàn)通“现”,意为展现,要能在工作中快速解决问题,学习 Python,就可以让你快速展现出业绩来。由 Python入门数据分析与数据挖掘,这算是程序员入行数据挖掘好的方法了, Python目前火的领域,就是在数据科学领域。况且 Python语法优美,第三方库庞大且高效,专门用于快速解决问题。
Python是一条巨龙,一旦展现在田野,必须拿出一点实力来表现自己,对上面的大人有利。从 Linux过来,将 Python应用到业务中,快速地解决了问题,业绩自然来了,其利也自现了。
在数据科学中,学了 Python的开发与数据分析,这还只是基础,还有另外一个工程领域的技能——大数据,需要学习。此时,进入九三爻。
1.3 大数据,终日乾乾
所有的事件都会进入第三阶段,即九三爻,爻辞为:君子终日乾乾,夕惕若,厉无咎。
君子,指有志气、有抱负的人。整天都很努力地学习,是会被人嫉妒的,所以言行都要小心。
工作中,必须要兢兢业业,努力做好工作。太阳下山之后,更需要警惕,时刻告诫自己,三天不学习,可能就赶不上曾经比自己差的人了。必须要利用业余时间学习新技术,而以 Hadoop为代表的大数据,正是近年来火得一塌糊涂的技术,况且网上的学习资料已经非常多了。
这是一门在学校很难学到的技术,因此必须自己利用业余时间,每天厉兵秣马,努力让自己的数据科学技能更加完善。
1.4 机器学习,或跃在渊
有些人和事,是没有第四阶段的,因为他们可能一辈子就留在第三阶段。进入第四阶段,即九四爻:或跃在渊,无咎。
学习了前面三种技术( Linux、Python和大数据)后,要想再深入,此时必须往数据挖掘与机器学习方面发展。数据挖掘与数据分析还是有一定区别的,数据挖掘更偏向于使用算法解决问题,而分析更多是偏统计与业务(包括运营、产品)层面的。
尤其是机器学习,要看得懂 scikit-learn的文档,必须辅助以相应的理论基础,涉及数学、统计学、计算机等多个领域。
一部分人在此阶段向机器学习方向跳跃,可是没有坚定的信念,后就真应了那句“从入门到放弃”的话了。
机器学习,因其特殊的学科领域,由程序员转过来的占很大一部分,要想跃上去,必须坚定信念,不忘初心。对码农而言,其难,就难在理论。下足工夫,坚持苦修,一定会有所成就。
1.5 Spark,飞龙在天
过了九四阶段,到九五阶段也容易。而九五阶段也是舒服的阶段,我们常说的九五至尊便是这个阶段。爻辞为:飞龙在天,利见大人。
有了前面的基础,再学习 Spark技术,相对就很容易了。再面对 Spark中的机器学习库 ML或 MLlib,也就不会束手无策了。 Spark可以说是前面技能的集大成者,需要 HDFS文件的支持,能天生支持 Hive的数据,能使用 Python的 API接口,以前在 Python中能用的那些库,在 Spark中,通通都能用,而且效率更高。
技能到了,境界也差不了多少,浑身散发的数据气场也很强。此阶段也可以认为是第二阶段的见龙眼中的大人了,行事也需要有大人的风范才行。
1.6 数据科学,亢龙有悔
做技术的人,其实比较希望停留在九五阶段,可却经常事与愿违啊!而且物极必反的道理相信你也懂,事物的发展是不会停止的。过了九五阶段,还有九六阶段。九六爻爻辞为:亢龙有悔。
有的人感觉自己领悟了整个数据科学的技能与本质,其实也还只是一些皮毛,若此时停止不前,甚至转向管理,那么技术也就基本荒废了。
正确的做法应该是,回头再去加深领悟各个阶段的技术与技能,将其更好地应用到业务中去。回想曾经犯
评论
还没有评论。