一份数据分析师的书单

这两礼拜,收到很多读者的来信。
总结了下,都是有关数据分析方向的咨询。
问题都是纠结于如何开始数据分析的学习。
我的方法很简单,找几本书,先看起来再说。
与其花那个时间去想,怎么办,还不如,直接办!
 
作为一名数据分析师,如果不会用 Excel 那肯定是不合格的。快速的粘贴,灵活的公式,丰富的图标排版,枯燥的数字瞬间在你的手指尖焕发出真正的魅力。依稀记得2007年,Excel 2007 横空出世。我还在用 visual foxpro 做图,展现三维数据的时候,而斤斤计较设计图标丑陋的时候,偶然间看到一个 Excel 透视图,瞬间觉得自己充满了希望,黎明前的黑暗我终于熬出来了。
更可贵的是, 这本书还讲解了怎么用 Excel 连接 SQL Server, 将 65536 行的限制扩展了无数倍。在卓别林 的世界里,拿了扳手,看啥都是螺帽。以后凡是遇到需要图的地方,我第一反应就是 Excel + SQL. 当然 SQL 渐渐发展,体现了它的局限,以后我会谈谈怎么突破这个局限。
 
如果你是一名教师,是一名刚从学校出来的财会,一定对这本书的教学方式,不陌生。典型的引导大家从例子出发,一步一步做一些实用性的画图,解释数据分析案例,还可以比较着来学 Tableau. Tableau 这两年在数据分析领域也是大放光彩,不仅仅拿下传统的数据仓库可视化设计,并且还和大数据 Hadoop, Hive, Spark SQL, Impala OLAP 紧密结合,学号这一门,所有的小数据,大数据分析统统搞定。
 
这是一本特别开胃的书。原因是我在上海去徐州的高铁上,4 个小时居然看完了,而且还不困。只要你有点基础(对分析师算是比较进阶了吧),4个小时也就是一下午,足够你看完一遍了。保证你还意犹未尽!
 
如果说看完了《Python基础教程》,你意犹未尽的话,这本书就再讲你送上一程。我看了其中的 2 章, 我已经能够写很好的爬虫了。比如将 Twitter 上的某些图片爬下来,比如去百度爬一些好玩的名词解释。qiyeboy 是一个难得的写作好手,非常良心。
 
经常有同学问我,不知道从哪里学起,该怎么入门 SQL。 其实我想说的是,入门都是很快的,只要你有耐心。如果你能抽出两个星期的周末的时间,好好看看书,做做例子,写写你的心得。让你的实验笔记来推动你的学习进程。那么你很快就可以进入学习的佳境了
 
这一本是进阶书,ben 大神的书,我在我的博客或者公众号中已经推荐过很多次了。他的这本书我已经看了不下3遍,每每拿起来看,还是收获不少。你知道微博里面的分页,是怎么实现的吗, 你知道你的成绩排名全班多少名吗,或者你想过用 SQL 给全班同学成绩算排名吗?书里将了数据孤岛问题,这是我去微软面试的时候,被问到的题。Ben 大神还有很多 SQL Server 方面的好书,他出一本我就买一本,就像东野圭吾的书一样,一本不落。这绝对是一本进阶书,看不看随你。雪山飞狐中有一个医生,给胡一刀媳妇看脉的,偷学了胡家刀法其中 4 页,已经是一方霸主了,我觉得这本书就是武学中的胡家刀法。你看其中一两个例子,就够你受用很久。
 
CDA 名气这么大的一个培训机构不用多说了吧,www.cda.cn. 毕业出来的学生,起薪都是 8K。加上刚才对 Tableau 的分析,这书是必看啊。我最喜欢看的还是案例,应该随时可以拿起来,也随时可以放下,下次继续。
 
这本绝对是进阶数据分析要看的。 前提是你要有统计学基础。看到这本的第一反应是,为什么图标长得完全跟 excel 不一样。直到我看了些统计学的思想,这里的图,才叫做分析。决策树,分类,聚类,神经网络等等,这些难以用 excel 的图展现的分析方式,全靠 R 了。R 还可以和 SQL Server 结合,和 Hadoop, Spark 集合,为什么不掌握呢?
 
这当然只是首期的推荐,如果你愿意相信一周搞定数据分析师,拿到 xx 万的 offer,那么这些书都不适合你!

解读《Hadoop 构建数据仓库实践》

书中构建一个数据仓库示例模型的讲解,实实在在的从 0 到 1 讲述了一个基于big data 的数据仓库原型的搭建。可以看做是一个非典型的应用场景。里面有很多的点,是可以值得拿出来好好深入思考的,举一反三

在数据建模这块,遇到一个数据模型的存储细节问题。

Hive 的用途在整个数据仓库中,是可以放在RDS,TDS两个阶段的。按照作者的思路,RDS, TDS 分别承载了整个数据仓库数据流的两个不同存储阶段。RDS, 即 Raw Data Source, 用来缓存各个应用系统过来的数据。没有经过转化,所以存储在 Hive 中,便可以有效利用 Hive 提供的分布式聚合功能,整合好数据,进入下一步转换。TDS, 即 Transmission Data Source, 也就是承载转换后的数据存储区域。

Hive 的这两种应用,底层存储的可以是 Text 文本文件,也可以是 Json 格式文件,还可以是其他格式文件,比如压缩版本的 Text 文件,压缩版本的 Json 文件。Text 文件是内置默认的文件格式,那么怎么来适配 Json 文件格式?因为 Hive 调用的输入输出 API , 其实就是 Hadoop 的 InputFormat, OutputFormat API. 这些 API 是 Java 编写的,因此如果要想用其他 InputFormat, OutputFormat API, 就需要添加这些 API 的 Jar 包。过程如下:

1. 先打开 Hive

2. 加载新的 Json 适配 API :

add jar /JsonApi/hive-hcatalog-core.jar

这里的 /JsonApi 是一个替代路径,在这个路径下面,存放着对应的 Json Format Api 的Jar 包

3. 创建新表的时候,使用这个 Jar 包来作为表结构的存储方式:

create table if not exists sales(

       name string

,       salary float

,       subordinates array<string>

,       deductions map<string,float>

,       address struct<street:string,city:string,state:string,zip:int>

)

row format serde "org.apache.hadoop.hive.contrib.serde2.JsonSerde"

stored as textfile

;

4. 在生成Json 格式的数据时,尤其要注意的是:所有的 Json 对象必须写在一行上。

因为一个Json对象,就被当做是一行记录,存到 Hive 表里面。如果将一个 Json 对象写成了多行,并且用回车换行,那么就会报这样的错误:

Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: java.io.IOException: Start token not found where expected

Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: org.codehaus.jackson.JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (from [Source: java.io.ByteArrayInputStream@498b611e; line: 1, column: 0])

at [Source: java.io.ByteArrayInputStream@498b611e; line: 1, column: 3]

针对 Json 文件的适配器,Hive 有自带的 SerDe 包,也有第三方的包可以使用。必须都在 add jar 命令中指定明确要使用的 SerDe 包的 Jar 名。

Hive 2.2.0 自带的 JsonSerDe 包是 hive-hcatalog-core.jar.

serDe 类是 row format serde ‘org.apache.hive.hcatalog.data.JsonSerDe’

比如 cdh 有自己的 Json SerDe Jar 包: hive-hcatalog-core.jar .

需要下载这个 Jar 包,并在 create table 中指定 JsonSerDe 类。

row format serde “org.apache.hive.hcatalog.data.JsonSerde”

第三方的包,还有:

1. 随着 Google “Summer of Code” 项目(http://code.google.com/p/hive-json-serde/)发展起来的 Json Serde

2. 在 Google “Summer Of Code” 的 Json Serde 上交叉形成的分支, Think Big Analytics Json Serde: https://github.com/thinkbiganalytics/hive-json-serde。 这个时候我们就需要使用对应 的 Json Serde 类了: row format serde “org.apache.hadoop.hive.contrib.serde2.JsonSerde”。

———————————-

欢迎关注【有关SQL】,加入微信群。

SQL 数据库安装失败

“ 安装 SQL Server 老是失败,求解决 ”

“ 安装 SQL 失败后,重装出错,求方案!”

这些问题也看了好多回了。

SQL Server  的安装会有各种各样的问题。问题有时候来的很莫名其妙,归总这些问题的来源也比较复杂,有组件没有装好的,有磁盘空间不够的,有权限问题,也有依赖库没有装好的。

其实 SQL Server 并不是家用电器,插上插头,通电就可以使用的,连说明书都可以不用看。SQL Server 的官方罗列了一堆预装要求,其实是很需要认真去看,和排查你的机器是否已满足安装要求。 可能大家都认为SQL Server 比较简单,所以懒得去看了。换了 Oracle, 我相信大家在 Linux/Unix 上安装的时候,就不会选择 Next->Next->Next 这种操作了。

说个我常用的方法吧,我不会直接去物理机器上安装 SQL Server, 因为装一次失败之后,会留下很多的残留文件在注册表,导致下次安装的时候,就不能很友好的安装成功。

做法就是新建一台虚拟机,在这虚拟机创建完毕之后,做一个Snapshot, 方便下次安装错误之后回滚。 接着看 SQL Server 的安装文档,将该设置的账户,该安装的依赖库,都建好。接着就是拿正版的或者官网下载的安装文件,安装。装完之后再做一个 Snapshot,以防启动之后,参数的修改带来的无法启动等错误。

如此做过几遍之后,我们就知道大概 SQL Server 安装的过程中,会出现哪些问题了,等到在生产环境安装的时候,才能大概率上保证安装成功。

安装 MySQL, Oracle, TereData 也都大抵如此!

—————————————

欢迎关注【有关SQL】,入群讨论!