不可否认的是 SQL 是一个伟大的发明,它让增删改查的操作更加地便捷化,而且 SQL 的学习成本相对其他编程语言来说较低,被逼到会写 SQL 的运营和产品我都见过不少。。。

大数据行业跟 SQL 更是有不解之缘,可谓“万物皆可 SQL 化”,从Hive/SparkSQL等最原始的最普及的 SQL 查询引擎,到 Impala/Presto/ClickHouse/Kylin/Phoenix 等等 OLAP 引擎,再到流式的 Structured Streaming/Flink SQL/Kafka SQL,可见想彻底摆脱 SQL 是不可能的了,相比各式各样的接口,复杂的规则,SQL 化成了一个简单化的标志,因为默认IT界人人都会 SQL,那就约等于人人都会使用这些复杂的工具,多美好。我想强调的是 SQL 是大数据从业者的必备工作技能,但是工作必须不能全是 SQL

1. 自动化

专职 SQL Boy 其实就像是在工厂里工作的流水线工人,需求来了,噼里啪啦一顿操作把SQL跑起来,把结果再丢给下游,再来个需求,再噼里啪啦。。。如此循环往复。不知道大家有没有感同身受,如果有的话我就问一句:工厂都知道要自动化,为什么你还不明白呢?

取数需求是永无止境的且无趣的,而且很多都是重复的,运营产品等需求方大佬们有时候要看这个产品今天的数据,就风风火火来了个紧急需求,看完之后发现哦不对,今天还没过完嘛,应该要看昨天的才对......

我:“&#@%!!”。

比这个还弱智的翻工原因估计还有很多,难道就这样任由大佬们蹂躏吗?你有没有想过这种需求其实是可以抽象的,SQL 语句写来写去就那么几个词,做这种需求就相当于是把自然语言人工翻译成SQL语言,那么这个翻译的过程是不是能够让代码来代替呢。

简单地给个建议,搞一套 OLAP 引擎,配合一个拖拽式的前端页面,就可以丢给运营们去慢慢玩了。三言两语说得很轻松,但是这其中的工作量是很大的,你需要花很多的时间在数仓的建设上,在平台的选型/搭建/测试/运维上,在接口开发/调试/对接上,最后因为自助分析不能够覆盖所有的需求,所有整个流程需要不停地优化和迭代,当然那些那些需要写几百行SQL才能解决的需求,可能还得你再想想办法。

在建设这一套自助分析系统过程中,你不可避免地会接触到更多的东西,元数据管理,数据治理,数据建模,Hadoop运维等等等等,恭喜你此刻你成功脱了SQL Boy的坑了,你需要把时间更多地花在上面说的那些事情中,虽然有点不道德但是你可以把 SQL Boy 这个荣誉称号让给新来的同事,可以把成百上千行的祖传 SQL 传递给他们了。

2. 数据驱动

这个时候应该有人会想说“老子就是那个接了祖传 SQL 的人”。。。别急,接着往下看。

如果你的 SQL 真的有成百上千行,那你应该要考虑你的数据仓库建设的合理性了,如果你也刚好是个数据仓库工程师,那应该是避免不了写 SQL 的了,但是我的理解是这里的 SQL 并不是上面提到的取数需求这种无趣无意义的 SQL,数仓的建设更多需要的是业务层面的理解,需要考虑更多的是如何能把数据的价值体现出来,很多业务方的需求其实是拍脑袋想出来的,要知道你是离数据最近的人,你也应当是对数据最熟悉的人,你应该是最能判断数据如何展示是有意义的,以及如何让自己的数据去发挥出最大的价值。

“数据驱动”是我很喜欢的一个词,如果能真正地做到数据驱动业务,那你写的SQL没白写,你是个SQL King,但真正能做到这样的人是少之又少,这其实是技术与业务的一个结合,这个方向上不仅仅对技术有要求,更重要的是需要培养对业务的理解能力。

3. 数据挖掘

其实很多的大数据开发,大数据分析,都是想往数据挖掘的方向发展的,但很多人都觉得门槛太高,被自己吓住了,不敢迈出尝试的第一步,虽然说数据挖掘入门会有一点门槛,但是其实并没有大家想象得那么难,高等数据,概率论,这些课程大家在大学应该都学过,大部分忘了没事,基本的概念记得即可,但是重点是你得耐得住漫长学习过程的寂寞。

另外,算法的工程落地是需要做很多开发类工作的,数据准备,接口开发等等,据我所知很多公司这些活都还是由数据挖掘的人来做的,所以也许数据挖掘师在算法上很强,但是你在工程上是有优势的,前两天看了木东居士老师的一篇文章,印象最深刻的一句话是“错位竞争”,转行做数据挖掘的想在学术上和别人硬碰硬是很难的,但是你有你的长处,你要把它发挥出来。

4. 结语

脱坑的方式其实有很多种,但是重点还是要看个人的自驱力,自己是不是真的在推动自己去脱坑了,还是只是停留在口头的抱怨。

另外,之前有几个童鞋问过我有没有数据挖掘入门的视频课程,不知道还有没有需要的童鞋,有的话就关注下公众号【大叔据】呗,人数的多话我去帮大家找找,找个高质量的过几天发出来。

觉得有价值请关注 :公众号「大叔据」

大数据 SQL Boy 脱坑指南的更多相关文章

  1. 最强最全面的大数据SQL经典面试题(由31位大佬共同协作完成)

    本套SQL题的答案是由许多小伙伴共同贡献的,1+1的力量是远远大于2的,有不少题目都采用了非常巧妙的解法,也有不少题目有多种解法.本套大数据SQL题不仅题目丰富多样,答案更是精彩绝伦! 注:以下参考答 ...

  2. 开发一个不需要重写成Hive QL的大数据SQL引擎

    摘要:开发一款能支持标准数据库SQL的大数据仓库引擎,让那些在Oracle上运行良好的SQL可以直接运行在Hadoop上,而不需要重写成Hive QL. 本文分享自华为云社区<​​​​​​​​​ ...

  3. 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)

    转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...

  4. (转)提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  5. (转载)提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. mysql千万级大数据SQL查询优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. mysql千万级大数据SQL查询优化30条经验

    转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...

  8. 30个mysql千万级大数据SQL查询优化技巧详解

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  9. Sql server 千万级大数据SQL查询优化的几点建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

随机推荐

  1. WPF 遍历 控件

    比较简单的方式是 在设计一个画面时 先添加一个grid 或其他的布局控件 确保要遍历的控件都在这个Grid中时就可以这么写 foreach (UIElement uie in Grid.Childre ...

  2. Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法

    原文:Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法  [函数名称]   部分彩色保留函数       WriteableBitmap PartialcolorProcess ...

  3. Index of /android/repository

    放这里了,总是记不住... https://mirrors.zzu.edu.cn/android/repository/

  4. SignalR---DOTNET客户端

    原文:SignalR---DOTNET客户端 这里面有用到异步的相关知识,本人前几篇文章也简单的提到. SignalR客户端要寄宿在.NET的客户端,必须安装Microsoft.AspNet.Sign ...

  5. C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装

    原文:C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装 1.SocketAsyncEventArgs介绍 SocketAsyncEventArgs是微软提供的高性能 ...

  6. 为javasript中对象与json串之间转换的总结。

    jQuery.json 是 jQuery 的一个插件,可轻松实现对象和 JSON 字符串之间的转换.可序列化 JavaScript 对象.数值.字符串和数组到 JSON 字符串,同时可转换 JSON ...

  7. LINUX基础内容

    在Linux中,有三种基本的文件类型: 1) 普通文件 普通文件是以字节为单位的数据流,包括文本文件.源码文件.可执行文件等.文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程 ...

  8. Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)

    Delphi 10.2 Linux 程序开发环境部署的基本步骤 http://blog.qdac.cc/?p=4477 升級到 Delphi 10.2 Tokyo 笔记http://www.cnblo ...

  9. 深入解析Windows窗口创建和消息分发(三个核心问题:怎么将不同的窗口过程勾到一起,将不同的hwnd消息分发给对应的CWnd类去处理,CWnd如何简单有效的去处理消息,由浅入深,非常清楚) good

    笔记:争取不用看下面的内容,只看自己的笔记,就能记住这个流程,就算明白了: _tWinMain-->AfxWinMain,它调用四个函数: -->AfxWinInit用于做一些框架的初始化 ...

  10. QML动画概述(几十篇相关博客)

    QML提供了丰富的动画元素,说起动画,无非是给UI增光添彩罢了.在QML中,动画常常与State和Transition联系在一起,这几个概念(下面的例子中都用到了)都比较简单,相关介绍可查看Qt官方文 ...