数据开发技能树


数据开发的分类

大数据时代来临之后,对于数据的处理逐渐成为了IT技术的一个重要门类;相比于传统的后台开发,数据开发是介于技术与业务之间的一种开发形态。通过数据,可以对业务进行分析、监控、预测,从而挖掘出数据的最大价值。“阿里巴巴号称自己不仅仅是一家电商公司,更是一家大数据公司”,就是大数据时代的最好注脚。

  • 按照用途分类,可以将数据开发分为:数据工程(数据仓库、维度建模、ETL建设)、数据应用(报表开发、BI分析、AB测试)、数据科学(机器学习、数据挖掘);
  • 按照时效性分类,可以将数据开发分为:离线计算(Hive/ Spark-SQL)、准实时计算(Spark-Streaming)、实时计算(Flink/ Storm);
    在这里插入图片描述

数据开发技能

离线开发

进行离线批处理计算,从而对下游的业务部门提供数据支持、报表开发;具体来说,基于Hive/ Spark-SQL进行离线处理。SQL当然是基本功,必须要精通;另外,也需要熟悉MapReduce的原理、Spark的内存模型、HDFS的读写流程、Hive优化经验、Spark与Hive的区别等知识点。这些也都是实际工作中会用到的、面试常提问的点。在经过征信上报项目的锻炼之后,这一部分的知识我已经精通了。

实时开发

准实时开发框架Spark-Streaming,实时开发框架Flink/ Storm,最少要掌握其中的一种。不仅要对组件的原理清楚,还要实际做过实时相关的业务开发,面试官也会假定一些业务场景,然后让你来设计方案,所以需要多关注些实时业务场景的应用实现。这些计算框架也是通过Java/ Python/ Scala等编程语言展开的,所以编程能力也很重要。

数据仓库

数据仓库的理论更多的是方法论层面的,是否真正掌握的标准是,是否拥有从0到1独立构建数据仓库的能力。目前更时髦的“数据中台”、“数据湖”的概念,可以说是对数据仓库的概念的扩充。

  • 数仓分层建模理论;
  • Kimball的维度建模理论,星型模型和雪花模型;
  • 常用的任务调度工具、血缘关系梳理;
  • 数据质量监控;
  • 元数据管理;
  • 实时数仓;

Java基础

Hadoop是目前大数据开发领域事实上的标准,而Hadoop生态中相当多的组件都是基于Java开发、或者提供了Java的API接口。因此,Java是面向高阶的数据开发的必备技能。但同时也要注意,不用向Java Web那个领域发展。SQL不算是一门编程语言,仅仅会SQL的话,会大大降低自己的职业天花板。

我看了不少Java书籍,只能说目前市面上的资料鱼目混珠、参差不齐。个人感觉比较好的是:

数据结构与算法

同样也是基本功,可能在实际工作中用的机会不多,但熟悉数据结构与算法,能够使得自己的开发能力大大提高;另外,这也是国内外程序员面试笔试的必考类目了。

提升的方式也很明确,刷题:牛客网和LeetCode。可以先将这些网站的题目刷完,然后参加上面的周赛、月赛;我的目标是获得10次榜单前十。

  • 《大话数据结构》,图文并茂、通俗易懂。但这本书是基于C++讲述数据结构的,对于Java开发者来说,需要自己结合书中的概念、JDK基础类去理解,最好一遍看书、一遍刷题,加强理解;
  • 牛客网
  • LeetCode

脚本开发语言

实际工作中经常会写一些单文件形式的脚本,以实现某些业务目的;在Linux环境要熟悉shell开发,在Windows环境推荐使用Python3开发。

数据可视化

数据可视化开发经验

统计学知识

数据挖掘

  • 《阿里巴巴数据挖掘实战》

机器学习算法

其他数据开发工具

  • ETL工具:Sqoop/ Flume/ Kettle / DataX等;
  • RDBMS:MySQL/ SQL Server/ Oracle等;
  • No-SQL:HBase/ Redis/ MongoDB/ ElasticSearch等;
  • 调度工具:Azkaban/ EasyScheduler/ AirFlow等;
  • 其他开发工具:Kafka/ Kylin/ Git/ Canal等;
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式Linux开发技能树是非常广泛的,涉及多个方面的知识和技能。以下是嵌入式Linux开发的一些主要技能点: 1. 操作系统原理:了解操作系统的基本原理,包括进程管理、内存管理、文件系统等。 2. C/C++编程语言:熟悉C/C++语言,能够进行嵌入式应用的开发。 3. 数据结构与算法:掌握常用的数据结构和算法,能够进行高效的程序设计和优化。 4. Linux系统:了解Linux系统的基本原理和常用命令,能够进行Linux系统的配置和调试。 5. 设备驱动开发掌握设备驱动的开发和调试技巧,能够编写和优化设备驱动程序。 6. 文件系统:了解文件系统的原理和常用的文件系统类型,能够进行文件系统的配置和管理。 7. 网络编程:掌握网络编程的基本知识和技术,能够进行网络通信的开发和调试。 8. 嵌入式硬件:了解嵌入式硬件的基本原理和接口,能够进行硬件和软件的协同开发。 9. 嵌入式调试:熟悉嵌入式调试工具和技术,能够进行嵌入式系统的调试和性能优化。 10. 物联网技术:了解物联网技术的基本原理和应用,能够进行物联网系统的开发和管理。 需要注意的是,嵌入式Linux开发是一个综合性的领域,需要掌握多个技能点才能进行全面的开发工作。因此,在学习嵌入式Linux开发时,建议从基础知识开始学习,逐步深入并实践相关的项目和案例,不断提升自己的技能和经验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [单片机、嵌入式Linux开发大学自学路径](https://blog.csdn.net/JingsongPan/article/details/128268567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [【嵌入式Linux】嵌入式Linux驱动开发基础知识之驱动程序基石](https://blog.csdn.net/weixin_43444989/article/details/124389612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值