3年Java开发转型大数据开发,如何跳出CRUD舒适区?

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 3年Java开发转型大数据开发,如何跳出CRUD舒适区?

自我介绍


我是Fan义,不是科班出身,大学学的是生物工程,后来也是自学加培训入的行,入行就做了 3年的Java 开发,后来觉得大数据前景更好一些,就想着转型大数据,经过疯哥指导后,在今年 7月份成功入职了一家大数据公司。


公司一般,不是大厂,不过目前我感觉还行吧,薪资涨了8K,而且我也算是大龄开发了,即将奔 3 ,工作前两年光顾着玩了,没想着规划,导致落下了很多东西,现在跟着大家一起努力,搞好大数据。


image.png


转型前


在做大数据之前,我做了快三年的 Java 后台开发,第一家公司也算是一家中规中矩的公司,没啥复杂业务场景,常年的 CRUD,基本也用不上算法跟数据结构的优化,常规的 Java Api 就足以应付日常需求了。


我想学大数据的想法萌生在去年国庆节那段时间,具体也没啥原因 就是感觉大数据未来可能会更好一些,同时也觉得转大数据有 java 基础会好转些,于是便在去年工作之余自学大数据了,当然 Java 未来也不差,最近火的微服务那一套掌握了也够吃得开了。


为什么转型


其实要说到为什么转型,这个还真没啥理由,可能是有些受当时热门技术的影响和薪资方面的影响吧。


在刷 Boss 招聘的时候,总感觉一般的大数据岗位比一般 java 岗位薪资要高,另外就是前些年的大数据热,各大高校也开了大数据课,时间也是成本啊,万一等新一届的大数据专业的大学生毕业了,到时候我就是再想转可能都没机会转了。


刚开始转型的行动和心理


说到刚开始转型的时候,其实心里特别没底的,最先的就是去网上找了某谷的大数据视频,一边看视频,一边学,要知道看视频效率是非常低的,但是没办法,总归人家视频中有一套体系,按着体系来学习总不会差太多,于是便开始了漫长的视频学习,整个视频看完大概花了3~4个月的时间,都是下班 或者 周末时间看的,说实话看完记住的真是不多,当时也没有什么好的办法,好在视频里也有对应的小项目可以做做,一来二去,跟着视频就到了年后。


最开始转型的时候最苦恼的就是没有规划,也没人问,不知道自己处于什么位置,漫无目的的跟着视频走效率也不高。转型过程


过年的时候一次巧合我在星球里刷到了疯哥的帖子,那上面公众号说有大数据的学习方法,一开始我是抱着怀疑的态度试试的,因为视频看的差不多了,打算就今年要出去面试了。之后要了份面经,边上班边刷面经,差不多一个月的时间吧,面经上那些简单的面试题算是掌握了,而那些源码级别的问题说实话我到现在也没弄明白。


之前光顾着按部就班地看视频,不知哪些是重点哪些是可以跳过的,看完也觉得似懂非懂,看项目视频的时候抓不到重点,无法与真实场景连接在一起。要说准备转型的过程中的我觉得比较困难的点还是自己学习的时候没有方向感,没有重点。


每个人的经历不一样,学的知识可能有很大差别,找到适合自己的才是最好的,知道自己的进度如何,知识体系差在哪,及时补充,这点非常重要。 面试过程


在今年7 8 月份的时候我面试了几家大数据公司,由于我是从 java 转过来的,侧重点包括了 java 和 大数据 ,面试对 java 基础和大数据的框架考察的比较详细,hadoop 读写、spark分区机制等是常问的面试题。


当然面试也肯定离不开项目,我是把自己工作经历加上了大数据的知识,这边感谢大疯哥帮忙整合项目,给了我一些方向和思路,结合自身项目的业务场景,离线、实时都有涉及。


由于我面的不是大厂,可能考察的知识并不是很深入,疯哥规划的知识体系基本上覆盖了考察的知识点,剩下的就是结合业务场景来说说为什么使用某种技术,解决了啥问题之类的了。最后也是比较幸运,找到了比较合适的公司。


转型后日常工作


新入职的这家公司是做舆情分析的,到现在也差不多入职3个月了,我所在的组就叫数据组,主要负责两方面的工作:


1 实时数据的处理与落地,实时这块用的还是比较老的 jstorm+ rabbitMQ 的技术,整个数据处理过程包括 数据采集+数据预处理+NLP属性+搜索引擎,我就处于数据预处理的环节。


技术上相对来说并不是很难,但刚入职还是得多花时间,一般的问题通过百度都能找的到。难就难在处理的业务上,到现在我也还在熟悉业务,业务上有很多语义、舆情上的东西,随着工作的深入,业务熟悉也在加深吧。


2 离线数据的再分析,计算,我们这叫做数据回溯,就是用旧数据做一些 sql统计,没啥复杂的逻辑, hive 常规操作就搞定了,不会像专门搞数仓的那种各种连接,各种函数的。


3 还有就是各种集群的常规维护吧,多少要会点集群维护的东西,我们这是没有专门的数据运维,所以一些集群操作,都是我们组的自己来弄的。


其实,说到日常工作,对我来说还是比较有挑战性,毕竟技术栈都是新的,接下去还要接入一些新框架Flink这些来替代现在的框架。公司业务也很深,不过我觉得业务这东西对现阶段的我来说可能还不是硬实力,但多少得懂点,所以未来我还是想再学学技术,先把技术弄扎实了,到哪都能混下去嘛



经验总结


1.要说经验的话,如果你还是学生的话,抓紧在学校学习的机会,打好基础最重要。要是你是已经工作的兄弟的话,咱本来就没多少时间学习,如果自己学习效率不高的话,赶紧找人给做个适合自己的计划,时间成本也是很高的啊,有人带跟自己憋完全就是两个世界。


2.另外学习要注重平时积累,最好别搞突击战,不管是视频也好,文档也好,耐心跟着进度学下去,平时努力了,结果应该不会太差。


3.别裸辞,能在职学尽量在职,学的差不多再离职集中面试不迟。


4.转型成功不代表一劳永逸,而是新阶段的开始,要做好终生学习的准备。
--end--

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
2天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
25天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
46 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
13天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
74 13
|
17天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
52 10
|
11天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
49 2
|
20天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
3天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
3天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。