我眼中的大数据: 我们未来该往何处

满打满算,工作接近三年的时间了,入行大数据也三年了。从开始时惊艳于大数据处理的高效,到现在时常迷茫未来数据的出路在哪,恍恍惚惚跨过了互联网的高峰。今天突然觉得,该总结下过去,思考下未来。我尽可能少谈些技术,但是有的时候忍不住会写几段代码,不过应该无伤大雅。

-- 引子 -- 

往前数五年,不,甚至三年,谁能想到互联网会是这番景象。借助疫情时期居家办公的风口,钉钉、腾讯会议、ROOM、企业微信等远程办公软件蓬勃发展。腾讯的股票飙到了700+,大家一度猜测腾讯会不会二度拆股;蚂蚁正孕育了世上最大的IPO,互联网造富的神话果不其然地在延续;字节凭借抖音撬开了外邦的大门,成为第一款风靡海外的现象级APP。互联网真一如既往、符合认知、延续传奇的疯狂的发展着。

可能暗藏的危机在繁华的那几年就隐隐可见,在那几年,陆续有几个文件下发,包括但不限于防止未成年人沉迷网络游戏、反垄断,因为众所周知的原因,经济开始下行,恍惚之间,“降本增效”成为热词。

囿于经济增速变缓、增长乏力、创新不足等等原因,互联网巨头们开始收拢战场,一股裁员潮突然袭来,离职贴、求职贴随处可见,大龄互联网青年成为裁员名单上的常客,人人自危,作为互联网从业者,作为数据从业者,我们该如何提升自己,我们该往哪个方向发展,也成为了我时常思考的问题。

以下仅代表个人看法,欢迎大家讨论,更欢迎大家提出自己的看法。

--  大数据的发展 --

说数据从业者,其实我更多是说大数据这个行业,毕竟我就在行业里。该从哪里谈起呢,这倒是不难,毕竟人人都知道谷歌的三架马车。

在2003年到2006年间,谷歌先后发表了三篇论文《MapReduce: Simplified Data Processing on Large Clusters》(2004)、《Bigtable: A Distributed Storage System for Structured Data》(2006)和《The Google File System》(2003),这三篇论文介绍了谷歌在海量数据上关于存储和计算的探索工作。由此,技术的发展被快进到大数据时代,谷歌的这三篇论文被称之为大数据领域的三架马车。

可气的是,谷歌虽然发表了论文介绍了自己工作的牛逼之处,但是并没有开源自己的系统。这种感觉就像是,我告诉你有我有一个贼拉好看、贼拉好玩、贼拉牛逼的玩具,你让我给你玩玩,我不给,你让我给你看看,想的美!所谓乱世出英雄,Apache Lucene项目下的搜索引擎子项目Nutch负责人Doug Cutting发现了MapReduce这篇文章,并基于这篇文章实现如今广为人知的Hadoop。此时的Hadoop还远没有如今的规模,仅仅只是实现了MapReduce和GFS。2008年Hadopp成为了Aapche基金会的顶级项目。

虽然Hadoop已经给了开发者很多惊喜,但是对于数据分析从业者来说依然很痛苦。2007年,Facebook构建一套基于Hadoop的数据仓库系统,也就是大名鼎鼎的Hive。Hive最大的贡献在于,他可以让开发者通过SQL编写MapReduce作业,将开发的难度大大降低。虽然时至今日,Hive已经逐渐被其他OLAP工具取代,但是Hive的SQL 规范已经成为事实上的标准。

此时的国内呢,2007-2008年间,国内开始陆续引入Hadoop,07年,百度开始使用Hadoop进行离线数据开发,淘宝开始基于Hadoop探索阿里巴巴的大数据之路。一场繁盛的大数据时代的序幕,正被缓缓拉开。后续,更多的大数据工具被提出,Spark、Pig、Hbase、Zookeeper、Yarn、ClickHouse等等。2014年,马老板提出,人类正从IT时代走向DT时代。在此期间,上面也陆续出台文件,大数据愈发受重视,BIG DATA成为热词,资本蜂拥而至,甚至高校也陆续建立起了大数据学院。

--  最好的时代、最坏的时代 --

资本就是催化剂,加速行业的发展。起初,数据行业是实实在在的蓝海,且不说Spark,会写MapReduce的WordCount就可以被认为是大数据领域的人才了,倘若你了解Spark那绝对是走在前沿最靓的仔。大数据的爆火,让无数前后端同学涌向大数据赛道,那是最好的时代。但是,那也是最坏的时代。工具不齐全,文档不到位,开源还存在问题,导致那个时代的大数据开发者需要直面很多系统级的优化。因此,各家大厂基于开源工具进行了多轮魔改,增加新特性,烟囱林立。

随着开源社区的发展、企业数据平台的完善,数据开发的难度被极大的降低了。起初,想要入门大数据,Java、Scala、Python、SQL,DB设计、后台系统,都需要有一定了解,现在呢?还有什么是我SQL Boy解决不了的数据问题?

public class WordCount {

    public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
        private IntWritable one = new IntWritable(1);
        private Text word = new Text();

        @Override
        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            StringTokenizer itr = new StringTokenizer(value.toString());
            while (itr.hasMoreTokens()) {
                word.set(itr.nextToken());
                context.write(word, one);
            }
        }
    }

public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        private IntWritable result = new IntWritable();

        @Override
        public void reduce(Text key, Iterable<IntWritable> value, Context context)
            throws IOException, InterruptedException {
            int count = 0;
            for (IntWritable val: value) {
                count += val.get();
            }
            result.set(count);
            context.write(key, result);
        }
    }

public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf, "word count");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(TokenizerMapper.class);
        job.setCombinerClass(IntSumReducer.class);
        job.setReducerClass(IntSumReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(args[0])); //输入文件所在路径
        FileOutputFormat.setOutputPath(job, new Path(args[1])); //输出文件所在路径
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

Java版本WordCount 

object WordCount {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount") 
    val sc = new SparkContext(conf)
    val wordpair = sc.textFile("data.txt") 
    val results = wordpair.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

    results.foreach(println) //打印
  }
}

Spark版本WordCount

select word, count(1)
from table_name
group by word

SQL版本WordCount

看看上面三个版本的WordCount代码,是不是可以感受技术发展魅力,我们仿佛步入了最好的时代,人人都可以进入到大数据行业。SQL的技术门槛可是比其他语言要低很多,甚至很多人认为光写SQL都不能算是程序员,我们凭借如此简单的工具,可以拿到大数据领域的薪资,多好的事情?但是,真的是这样的吗?

工具的完善将大数据开发的难度降低到一个似乎人人可以上手的程度,以阿里、腾讯为代表的大厂提供了完善的数据平台工具,数据治理、数据开发都可以通过SQL解决,前辈们手撸Java的时代仿佛已经一去不复返了,但是,这也意味着,大数据从业者的平均上限被拉低了。我们不需要像后台或者前端一样去了解复杂的系统设计,也不需要同算法一样深入了解算法背后的数学原理,写写SQL,解决问题,将我们困在了数据开发的舒适区,了解业务就OK了。同时,公司也不希望我们花费时间用Java来解决问题,写SQL!全都给我写SQL!我们日常学习了解的系统设计、数据开发的底层知识仿佛成为了屠龙之技,毫无用处。

不仅如此,随着数据保护、隐私保护相关文件的提出,离数据最近的我们也变得可能失去数据。失去数据,还需要我们吗?同时,由于大数据职业的特殊性,并不是所有的公司都需要大数据处理能力的。毕竟,每日TB、PB的数据,也不是每个公司都有的。这意味大数据的就业面天然是窄的。我们貌似已然进入了最坏的时代,不仅仅是因为增长乏力带来的裁员危机,更由于平台建设的完善,导致数据开发的门槛和上限被拉低。

由此,我们引入了今天要讨论的第一个话题:大数据还是一个值得进入的行业吗?

-- 大数据,能入行吗 --

谈这个话题前,先谈谈大家都好奇的大数据从业的方向。从目前我观察到的来看,大数据行业大致可以分为下面几类

  • 大数据分析 / BI:使用大数据工具进行数据分析,绝大部分都是SQL,难度大一点的会使用Python和机器学习工具

  • 数仓开发 / 离线开发:绝大部份时候在写SQL,开发离线数据,搭建数据仓库

  • 实时数据开发:和离线开发类似,只是将离线变为实时

  • 数据平台开发:搭建数据平台,这回不是写SQL了,无限接近于后台开发,但是需要了解大数据原理

  • 数据引擎开发:对大数据引擎进行魔改

  • 数据应用开发:写代码和写SQL一半一半,一般是开发业务系统的数据逻辑部份,但是需要和后台耦合,因此要写代码而不仅仅是SQL

可见,除了引擎和平台开发可以有一定几率让我们远离SQL,其他种类的工作基本上都是和SQL终身相伴的,并且随着平台的完善,写SQL的时间会慢慢增加。我们每天做的最多的事情就是开会对口径,这个指标怎么算,这个指标怎么存,维度是什么,量级是什么?

- 从工作的难度上来看,大数据是一个性价比很高的行业。我们不需要了解复杂的系统设计,不需要深挖繁杂的设计模式,拥有数据思维,会写SQL就足以应付90%的工作了。

- 从工作的上限上来看,大数据和其他后台或者前端并无区别,只要你够牛逼,你依然可以成为数据架构师、成为管理层。可是难受是,让你成为架构师的,一定不是SQL,而是数据开发中往往不太在意的系统设计。而管理,我只能说,骚年,你相信自己是气运之子吗?普通人,成为基干,往往已是职业的巅峰了。如果你一直是开发,那数据一定是不如其他的。在公司里,数据往往是提供服务的,他们不像后台和前端那样直面业务,也不如算法往往是业务增长的关键,数据远不如他们重要。

所以,你问我数据能入行吗?当然能!没有一个行业是不能入门的,但是如果回到三年前,我会希望自己走后台开发的路子。

可能有人不理解,我说两个自己的事。

(1)如前面的文章所言,我最近换工作了。从深圳转战了杭州。我发现,只要这个公司在当地有一个办事处,极大概率会有后台、前端和算法,但是数据有没有,就很难说了。

(2)前阵子ChatGPT很火,我想自己搭一个ChatGPT服务,我突然发现自己对于这种知识很匮乏,但是前端和后台的同学却很轻易的就上手搭建,无奈我只能自己COPY了开源的代码。

-- 入局的我们,该往何处 --

其实,我也迷茫。一个比较模版化的答案大致上有三个方向可以走。一个是往底层钻研,了解后台的知识,往架构师的路子走;第二则是在业务上死磕,做一个业务上独一无二的仔;最后,则是往算法的康庄大道上卷啊卷。

不过,从目前算法的卷度上来看,数据转算法无异于粪坑里点灯-找屎。从公司的发展来说,其实给我们的只有一条路,技术和业务两手要抓,两手要强。其他人,都会成为公司向社会输出的具有多年经验的技术型人才。

在公司里,大龄的同事往往会思考35岁后的自己该做什么。这篇文章也无法给你指出一条明路,因为我自己也不清楚。不过,各位在工作之余,如果还有时间的话,不妨想想自己除了互联网,还适合什么?也许我们无法一直在互联网,但是互联网思维却可以一直在。


如果你觉得文章还不错,欢迎关注我的公众号:数据算法笔

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值