【数据开发】大数据岗位,通用必备技术栈(数据分析、数据工程、数据科学)

【数据开发】大数据岗位,通用必备技术栈(数据分析、数据工程、数据科学)

文章目录

      • 1、岗位与技术要求
        • 1.1 常见岗位介绍
        • 1.2 行业发展方向
        • 1.3 附部分JD
      • 2、数据开发技术栈
        • 2.1 数据处理流程
        • 2.2 学习路线与框架
      • 3、数据分析技术栈
        • 3.1 基础知识
        • 3.2 进阶知识

1、岗位与技术要求

1.1 常见岗位介绍
  • 数据分析(低阶)
    • 在很多公司里,**数据分析一般是产品岗位,所以对技术栈要求一般较低。**毕竟这个年代,大家都是大数据了,产品要分析某些功能数据时,总不能等程序员来帮你取数据,所以现在很多公司有数据分析岗位,要求求职者有相关的数据处理技能。
    • 语言(Python,SQL)
    • 框架(Pyspark, Pandas)
    • 软件(PowerBI, SAS等)
    • 其他(有做产品经验,会数据可视化)
    • 其实技能对于数据分析岗位来说真的不算核心竞争力,所以就会从其他,比如产品经验,学历背景等方面进行设置门槛,同时长期发展来说也容易被替代, 薪资比起程序员来说也不算有竞争力。
  • 数据工程(中阶)
    • 数仓工程师, 具备看需求文档的能力,对大数据产品技术架构原理有深入了解。熟悉数据仓库开发及建模,熟悉Mysql Redis等常用数据库及缓存;熟悉Hadoop生态圈技术,了解生态圈相关组件;掌握Java、Hive、Sql,熟悉至少一门脚本语言。
    • ETL工程师(ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程)等。
    • 技术栈: Hadoop Hive Spark Storm Flink HBase Kafka Zookeeper Flume Sqoop Azkaban Scala
    • 语言(Java, Scala, SQL,Python,C/C++)
    • 框架(Hadoop, Spark,Zookeeper, Flink,Kafka)
    • 数据库/数据系统(Hive, HBase, Hdfs,TD, MongoDB/Click House)
    • 其他(了解数据传输,包括FTP,syslog,socket等各种方式, 有过T级别数据的处理经验)
  • 数据科学(高阶)
    • 例如数据科学家、算法工程师、深度学习模型工程师等等,细分到领域,还有NLP工程师,CV工程师等等。其实就是机器学习工程师和深度学习工程师
    • 语言(Python,Scala)
    • 框架(Pandas, MLlib, sklearn,Tensorflow, NLTK, CNN等,Tensorflow/PyTorch, NLTK, OpenCV等)
    • 机器学习模型(线性模型:Logistic Regression 非线性模型:xgboost, random forest, CART等等非监督模型:isolation forest,KMeans等等,CNN、BERT等前沿深度学习模型)
    • 深度学习模型(Yolo、BERT等前沿深度学习模型和XGBoost等集成机器学习模型)
    • 其他(掌握相关domain knowledge,数据可视化,概率论基础知识,linux, Spark,熟悉linux,线性代数,概率论)
    • 由于深度学习领域还分CV、NLP等,所以很难说加分技能栈。反正懂什么技能栈都不如发篇顶会加分。
    • 无论你搞不搞深度学习,只要是搞数据建模的,难逃概率论。常考的面试题如:均值与方差及其公式什么是高斯分布什么是正态分布贝叶斯公式三门问题
1.2 行业发展方向
  • 大数据目前基本可分为实时和离线两大类,前者要求分钟级甚至秒级延迟,后者则可以接受t-1离线跑批,即当天(t)查询前一天(t-1)数据的需。
  • 离线数仓:Hadoop + Spark/Mapreduce + Hive/HDFS+ Impala + Sqoop/Kettle + Azkaban
  • 实时数仓:Hadoop + Flink + Kafka + Hbase + Sqoop + Azkaban
  • 大数据主流发展的都是实时方向,也有数据流,数据湖,以及湖仓一体。如果基于实时方向 Java/Scala 比SQL重要,而离线跑批 则是SQL,Shell,Perl/Python。

在这里插入图片描述
在这里插入图片描述

1.3 附部分JD
1、
岗位职责:
1、打造有竞争力Hadoop软件平台;
2、独立或带领小组完成大数据领域定制需求的设计和开发工作;
3、完成需求验证和维护工作。
岗位要求:
1、计算机相关专业本科及以上学历;
2、熟悉C/C++、JAVA、Python、JS中的至少一种,掌握常见的数据结构、算法,了解软件工程、敏捷开发等知识,熟悉常用设计模式;
3、熟悉大数据开发框架,熟悉Hadoop/Spark/Hbase/MPP DB及业界主流流处理平台如Storm/Flink/Spark Streaming之一;
4、精通Java,能深刻理解IO,多线程等基础框架,熟悉JVM的原理和性能调优;
5、对大数据框架开发有成功实践经验者优先。


2、
1.熟练掌握数据分析方法,包括但不限于excel、tabluea等BI分析工具使用;
2.熟练掌握sql语句编写,对hive clickhouse等大数据相关数据库相关sql语法了解熟悉;
3.有python算法开发经验或机器学习&深度学习开发经验,能独立开发相关数据分析算法及模型;

3、
岗位要求
1、 掌握Linux操作系统日常使用和shell等脚本、可使用脚本处理集群开发、运维相关问题
2、 熟悉数据库原理,有ORACLE/MYSQL等数据库开发经验,可编写SQL查询语句,具备SQL调优能力
3、 熟悉hadoop生态圈组件,如Hive/HDFS/HBASE/spark/flink等
4、 至少熟悉Java/Scala/Python中一门开发语言,熟悉程序报错处理以及应用调试
5、 良好的沟通能力,需具备与项目干系人沟通和协助能力。
岗位职责
1、 客户需求分析和大数据规划方案落地设计 
2、 大数据产品FusionInsight HD规划设计、部署安装、运维管理,故障处理
3、 协助客户或伙伴解决FusionInsight HD开发支持和性能调优问题
4、 独立完成大数据项目规划和部署、指导客户或伙伴解决大数据产品问题,保证项目成功

4、
岗位职责:
1、建设公司级大数据平台,提供稳定、高效、先进的流式计算服务,支撑万亿级实时业务;
2、打造和优化计算引擎,面向业务扩展引擎能力,提升计算效率与可靠性。
任职要求:
1、本科及以上学历,扎实的计算机基础,良好的数据结构、操作系统、计算机网络功底,良好的技术热情与工程能力追求,具有大数据平台或组件的研发、运维经验;
2、掌握 Java/Scala/C++ 语言(之一),对并发编程、内存模型、RPC、JVM等有良好掌握,具有良好的编程习惯,追求高标准的工程质量;
3、对 Flink 或 Spark 等计算引擎有深入理解,具有丰富研发经验或开源贡献经验;
4、熟悉 Hadoop 生态(HDFS/HBase/Kafka/Hive/Zookeeper/YARN/Iceberg/Hudi等)相关组件原理,对大数据平台架构与规划有一定的理解与思考;
5、具备较强的自驱力、责任心、沟通能力、学习能力。


5、
工作职责
岗位职责:
 1、基于金融行业特点构建企业级数据仓库;
 2、参与实时和离线的数据采集,处理和存储,方案设计及标准制定; 
 3、对现有大数据数据体系进行脚本优化,功能优化等,提升数据存储和计算资源利用率;
 4、参与解决大数据数仓建设、数据治理过程中的难点和问题,了解行业前沿大数据数据处理方法。
任职要求
任职要求:
 1、本科及以上学历,2年以上数据平台开发经验,较好的业务理解和沟通能力,具备金融业务知识优先; 
 2、熟悉数据仓库建设过程,具备数据集市、数据主题、标签体系建设经验优先;
 3、熟悉数据治理流程,具有数据热点、元数据管理、血缘分析经验优先;
 4、熟练Hive、Spark、Flink等离线、流式计算框架的使用和调优,理解核心机制,有良好的SQL性能优化能力;;
 5、熟练掌握Java、python中的至少一种开发语言,较强编码能力,熟悉Python和Shell开发优先;
 6、熟悉HBase、Clickhouse、Doris等常见分布式数据存储读写及其性能优化优先。

2、数据开发技术栈

2.1 数据处理流程
  • 数据收集:

    • 现在的中大型项目通常采用微服务架构进行分布式部署,所以数据的采集需要在多台服务器上进行,且采集过程不能影响正常业务的开展。基于这种需求,就衍生了多种日志收集工具,如 Flume 、Logstash、Kibana 等,它们都能通过简单的配置完成复杂的数据收集和数据聚合。
  • 数据存储:

    • 收集到数据后,下一个问题就是:数据该如何进行存储?通常大家最为熟知是 MySQL、Oracle 等传统的关系型数据库,它们的优点是能够快速存储结构化的数据,并支持随机访问。但大数据的数据结构通常是半结构化(如日志数据)、甚至是非结构化的(如视频、音频数据),为了解决海量半结构化和非结构化数据的存储,衍生了 Hadoop HDFS 、KFS、GFS 等分布式文件系统,它们都能够支持结构化、半结构和非结构化数据的存储,并可以通过增加机器进行横向扩展。
    • 分布式文件系统完美地解决了海量数据存储的问题,但是一个优秀的数据存储系统需要同时考虑数据存储和访问两方面的问题,比如你希望能够对数据进行随机访问,这是传统的关系型数据库所擅长的,但却不是分布式文件系统所擅长的,那么有没有一种存储方案能够同时兼具分布式文件系统和关系型数据库的优点,基于这种需求,就产生了 HBase、MongoDB。
  • 数据分析:

    • 大数据处理最重要的环节就是数据分析,数据分析通常分为两种:批处理和流处理。
      • 批处理:对一段时间内海量的离线数据进行统一的处理,对应的处理框架有 Hadoop MapReduce、Spark、Flink 等;
      • 流处理:对运动中的数据进行处理,即在接收数据的同时就对其进行处理,对应的处理框架有 Storm、Spark Streaming、Flink Streaming 等。
    • 批处理和流处理各有其适用的场景,时间不敏感或者硬件资源有限,可以采用批处理;时间敏感和及时性要求高就可以采用流处理。随着服务器硬件的价格越来越低和大家对及时性的要求越来越高,流处理越来越普遍,如股票价格预测和电商运营数据分析等。
    • 上面的框架都是需要通过编程来进行数据分析,那么如果你不是一个后台工程师,是不是就不能进行数据的分析了?当然不是,大数据是一个非常完善的生态圈,有需求就有解决方案。为了能够让熟悉 SQL 的人员也能够进行数据的分析,查询分析框架应运而生,常用的有 Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix 等。
    • 这些框架都能够使用标准的 SQL 或者 类 SQL 语法灵活地进行数据的查询分析。这些 SQL 经过解析优化后转换为对应的作业程序来运行,如 Hive 本质上就是将 SQL 转换为 MapReduce 作业,Spark SQL 将 SQL 转换为一系列的 RDDs 和转换关系(transformations),Phoenix 将 SQL 查询转换为一个或多个 HBase Scan。
  • 数据应用:

    • 数据分析完成后,接下来就是数据应用的范畴,这取决于你实际的业务需求。比如你可以将数据进行可视化展现,或者将数据用于优化你的推荐算法,这种运用现在很普遍,比如短视频个性化推荐、电商商品推荐、头条新闻推荐等。当然你也可以将数据用于训练你的机器学习模型,这些都属于其他领域的范畴,都有着对应的框架和技术栈进行处理。
  • 其他框架:

    • 上面是一个标准的大数据处理流程所用到的技术框架。但是实际的大数据处理流程比上面复杂很多,针对大数据处理中的各种复杂问题分别衍生了各类框架
    • 单机的处理能力都是存在瓶颈的,所以大数据框架都是采用集群模式进行部署,为了更方便的进行集群的部署、监控和管理,衍生了 Ambari、Cloudera Manager 等集群管理工具;
    • 想要保证集群高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分布式协调服务,它能够解决大多数集群问题,包括首领选举、失败恢复、元数据存储及其一致性保证。同时针对集群资源管理的需求,又衍生了 Hadoop YARN ;
    • 复杂大数据处理的另外一个显著的问题是,如何调度多个复杂的并且彼此之间存在依赖关系的作业?基于这种需求,产生了 Azkaban 和 Oozie 等工作流调度框架;
    • 大数据流处理中使用的比较多的另外一个框架是 Kafka,它可以用于消峰,避免在秒杀等场景下并发数据对流处理程序造成冲击;
    • 另一个常用的框架是 Sqoop ,主要是解决了数据迁移的问题,它能够通过简单的命令将关系型数据库中的数据导入到 HDFS 、Hive 或 HBase 中,或者从 HDFS 、Hive 导出到关系型数据库上。
2.2 学习路线与框架
  • 语言基础:
    • JAVA:大数据框架大多采用 Java 语言进行开发,并且几乎全部的框架都会提供 Java API ,目前大多数框架要求 Java 版本至少是 1.8。
    • Scala:一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在 Java 虚拟机上,可以与所有的 Java 类库无缝协作,著名的 Kafka 就是采用 Scala 语言进行开发的。当前最火的计算框架 Flink 和 Spark 都提供了 Scala 语言的接口,使用它进行开发,比使用 Java 8 所需要的代码更少。
    • Maven:自动化构建工具主要是 Maven,不论你的项目是使用 Java 语言还是 Scala 语言进行开发,提交到集群环境运行时,都需要使用 Maven 进行编译打包。大部分大数据框架使用 Maven 进行源码管理,当你需要从其源码编译出安装包时,就需要使用到 Maven。
  • 框架学习:
    • 数据收集:
      • 日志收集框架:Flume、Logstash、Filebeat
    • 数据存储:
      • 分布式文件存储系统:Hadoop HDFS
      • 数据库系统:Mongodb、HBase
    • 数据分析:
      • 分布式计算框架
        • 批处理框架:Hadoop MapReduce
        • 流处理框架:Storm
        • 混合处理框架:Spark、Flink
      • 查询分析框架:Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix
    • 集群:高可用、任务调度、并发、迁移
      • 集群资源管理器:Hadoop YARN
      • 分布式协调服务:Zookeeper
      • 任务调度框架:Azkaban、Oozie
      • 集群部署和监控:Ambari、Cloudera Manager
      • 数据迁移工具:Sqoop

3、数据分析技术栈

(高级的数据分析看起来需求不低于数据开发,数据工程,毕竟是更直接面向老板的)

3.1 基础知识
  • Excel、MySQL
  • Python编程基础、Python数据清洗、Python数据可视化
  • Python机器学习,Python网络爬虫
3.2 进阶知识
  • R,spss或者其他统计分析工具

在这里插入图片描述

在这里插入图片描述

以上是数据分析和数据工程部分的,算法的不再详细展开了,不如卷学历卷科研去

参考资料:1-八股,2-知乎1,3-知乎2, 4-数据开发,5-数据分析,6-R语言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415033.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何一步一步地优化LVGL的丝滑度

经过一番周折将LVGL移植到了STM32F407单片机上,底层驱动的LCD是st7789,移植时的条件和环境如下: ●LVGL用的是单缓冲,一次刷新10行; ●刷新函数用的是最原始的一个一个打点的方式; ●ST7789底层发送数据用的…

【MySQL】学习和总结标量子查询

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-kLo6jykc7AcEVEQk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

JMeter--9.录制脚本

录制步骤 1.新建线程组:测试计划->线程->线程组 测试计划下,至少要有1个线程组,因为在录制器中需要选择【目标控制器】 2. 新建录制器:测试计划->非测试原件->HTTP(S)测试脚本记录器(HTTP代理服务器&…

Linux磁盘如何分区?

首先需要先给虚拟机添加磁盘 sblk #查看磁盘设备 得到以下内容: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 pa…

毕业后的那两年,我是怎么从一个啥也不会的小白成长为成熟职场人的?

对于2023应届生而言,从毕业到踏入职场也许正是你人生中很大的一个变化,但在初入职场的期间,很多同学很容易因为一些经验问题而误入弯路。 笔者从一个职场萌新到如今的职场老人,一路走来也经历了不少社会毒打。在职场生涯中&#…

kubectl 命令行管理K8S(上)

目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 应用发布策略 金丝雀发布 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源…

Nest.js权限管理系统开发(八)jwt登录

安装相关依赖 虽然仅使用nestjs/jwt就能实现身份验证的功能,但是使用passport能在更高层次上提供更多便利。Passport 拥有丰富的 strategies 生态系统,实现了各种身份验证机制。虽然概念简单,但你可以选择的 Passport 策略集非常丰富且种类繁…

kotlin与java的相互转换

Kotlin转java 将kotlin代码反编译成java Tools -> Kotlin -> Show Kotlin Bytecode 然后点击 【Decompile】 生成java代码 java转kotlin Code -> Convert Java File To Kotlin File

Netty入门指南:从零开始的异步网络通信

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Netty入门指南:从零开始的异步网络通信 前言Netty简介由来:发展历程:异步、事件驱动的编程模型: 核心组件解析通信协议高性能特性异步编程范式性能优化与…

2055041-59-1,NH-(PEG4-acid)2,能将基因和蛋白质导入到细胞内

您好,欢迎来到新研之家 文章关键词:2055041-59-1,NH-bis(PEG4-acid) HCl salt,NH-(PEG4-acid)2,NH-bis(PEG4-acid),NH-BIS(四聚乙二醇-羧酸) 盐酸盐 一、基本信息 【产品简介】:NH bis (PEG4…

全新抖音视频下载软件|批量视频下载工具

随着抖音平台上精彩视频的不断涌现,许多用户希望能够方便地保存自己喜欢的视频内容,以便随时观看或分享给朋友。为了满足这一需求,我们基于C#开发了一款全新的视频下载软件,为您提供便捷、高效的视频获取体验。 主要功能模块&…

redis-Redis主从,哨兵和集群模式

一,Redis的主从复制 ​ 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。这样做的好处是读写分离,性能扩展,容灾快速恢复。 1.1 环境搭建 如果你的redi…

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 (类似坐标) 向量:既有大小,也有方向。(类似以个体为主体的方向,前方一百米) 向量的模:向量的大小。(类似以个体为主体的方向,前方一百米、只取一百米…

计算机设计大赛 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

软件测试笔记(三):黑盒测试

1 黑盒测试概述 黑盒测试也叫功能测试,通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作是一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,只检查程序功能是否按…

nginx实现http反向代理及负载均衡

目录 一、代理概述 1、代理概念 1.1 正向代理(Forward Proxy) 1.2 反向代理(Reverse Proxy) 1.3 正向代理与反向代理的区别 2、同构代理与异构代理 2.1 同构代理 2.2 异构代理 2.3 同构代理与异构代理的区别 二、四层代…

【Web安全靶场】sqli-labs-master 21-37 Advanced-Injection

sqli-labs-master 21-37 Advanced-Injection 第一关到第二十关请见专栏 文章目录 sqli-labs-master 21-37 Advanced-Injection第二十一关-Cookie注入第二十二关-Cookie注入第二十三关-注释符过滤的报错注入第二十四关-二次注入第二十五关-过滤OR、AND双写绕过第二十五a关-过滤…

【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

步骤一 准备两个服务,provider和consumer 本文使用kotlin语言 provider是服务的提供者,由provider连接数据库 RestController RequiredArgsConstructor RequestMapping("/provider/depart") class DepartController(private val departServ…

常用对象的遍历方法

var obj [{name: 1111,account: {01: { name: 1.1 },02: { name: 1.2 },03: { name: 1.3 },04: { name: 1.4 },05: { name: 1.5 },}} ]var nowObj obj[0].account;1、for…in 任意顺序遍历对象所有的可枚举属性(包括对象自身的和继承的可枚举属性,不含…

flutter 封装webview和使用本地网页

最先看到flutter_webview_plugin 用法特别简单 flutter_webview_plugin | Flutter PackagePlugin that allow Flutter to communicate with a native Webview.https://pub-web.flutter-io.cn/packages/flutter_webview_plugin缺点: 没有实现js sdk的功能 没有办法 …