大数据是啥
你了解到的大数据是啥样子?
还是…
大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。 [19]
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 [2]
“大数据”一词列出了商务印书馆推出的《汉语新词语词典(2000—2020)》中国这20年生命活力指数最高的十大“时代新词”。 [20]
大数据就业方向
大数据就业方向
大数据就业方向主要有:互联网、物联网、人工智能、金融、体育、在线教育、交通、物流、电商等。
大数据就业方向
- 1、Hadoop大数据开发方向
市场需求旺盛,大数据培训的主体,目前IT培训机构的重点。
对应岗位:大数据开发工程师、爬虫工程师、数据分析师等。
- 2.、数据挖掘、数据分析&机器学习方向
学习起点高、难度大,市面上只有很少的培训机构在做。
对应岗位:数据科学家、数据挖掘工程师、机器学习工程师等。
- 3.、大数据运维&云计算方向
市场需求中等,更偏向于Linux、云计算学科
对应岗位:大数据运维工程师
当下,大数据的趋势已逐步从概念走向落地,而在IT人跟随大数据浪潮的转型中,各大企业对大数据高端人才的需求也越来越紧迫。这一趋势,也给想要从事大数据方面工作的人员提供了难得的职业机遇。
随着互联网、物联网、云计算等技术的发展,数据量呈现指数级增长,大数据技术的应用也越来越广泛。大数据技术的应用领域包括金融、医疗、教育、制造业、能源、电信、零售等各个行业。因此,大数据技术的就业前景非常广阔,涉及的岗位也非常多样化。
具体来说,大数据技术的就业岗位主要包括以下几类:
数据工程师:负责数据的采集、清洗、存储、处理和分析等工作。
数据分析师:负责对数据进行统计分析、挖掘和可视化,提供商业洞见和决策支持。
大数据架构师:负责设计和构建大数据系统架构,包括数据流程、数据仓库、数据管理、数据保护等。
人工智能工程师:负责设计和开发人工智能算法和模型,提供智能决策和推荐系统等。
企业信息化顾问:负责为企业提供信息化解决方案,包括大数据技术的应用和推广。
大数据技术的发展趋势
随着大数据技术的不断发展和应用,其发展趋势也日趋明显。以下是几个主要的趋势:
云计算和大数据的结合:云计算技术可以提供强大的计算和存储能力,为大数据技术的应用提供了更好的基础。
人工智能和大数据的融合:人工智能技术可以从大数据中提取知识和规律,实现自动化智能决策。
数据安全和隐私保护:随着数据泄露和滥用事件的增加,数据安全和隐私保护成为大数据技术发展中的重要问题。
数据可视化和交互式分析:数据可视化和交互式分析能够使数据更加直观易懂,提高决策效率。
综上,大数据技术的就业前景和发展趋势非常广阔。对于有相关专业背景和技术能力的人来说,大数据技术是一个非常有发展前途的行业。
知识体系
一般来说,hadoop , hive, HBase, spark ,这些都是大数据专业课,但是,其它的kafka, flume zookeeper,甚至 JAVA,linux, scala,python 这些都是属于计算机专业比较通用的知识。并不是大数据专属。
Hadoop
是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统
hive
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
HBase
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
Spark
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
Scala
这门语言就是天生为spartk打造的语言。很多的核心算法都是由Scala 所写。
联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。Odersky先前的工作是Generic Java和javac(Sun Java编译器)。Java平台的Scala于2003年底/2004年初发布。.NET平台的Scala发布于2004年6月。该语言第二个版本,v2.0,发布于2006年3月。
截至2009年9月,最新版本是版本2.7.6 。Scala 2.8预计的特性包括重写的Scala类库(Scala collections library)、方法的命名参数和默认参数、包对象(package object),以及Continuation.
2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。此外, Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。
代码样子如下:
import org.apache.spark.SparkContext
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS,LogisticRegressionModel}
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics
代码 8-13 分割数据集
// Load training data in LIBSVM format.
val data = sc.textFile("/tipdm/data.txt").map{
x=> val lines = x.split(",");LabeledPoint(lines(0).toDouble,Vectors.dense(lines.slice(1,lines.length).map(_.toDouble)))};
// Split data into training (80%) and test (20%).
val splits = data.randomSplit(Array(0.8, 0.2), seed = 11L)
val training = splits(0).cache()
val test = splits(1)
代码 8-14 建立 Logistic 模型
// Run training algorithm to build the model
val model = new LogisticRegressionWithLBFGS().setNumClasses(2).run(training).setThreshold(0.5)
代码 8-15 predict 预测数据
// Run training algorithm to build the model
// Compute raw scores on the test set.
val predictionAndLabels = test.map { case LabeledPoint(label, features) =>
val prediction = model.predict(features)
(prediction, label)
}
代码 8-16 计算精确率、召回率、F 值、ROC 曲线
// Get evaluation metrics.
val metrics = new BinaryClassificationMetrics(predictionAndLabels)
// Precision by threshold
val precision = metrics.precisionByThreshold
precision.collect.foreach { case (t, p) =>println(s"Threshold: $t, Precision: $p")}
// Recall by threshold
val recall = metrics.recallByThreshold
recall.collect.foreach { case (t, r) =>println(s"Threshold: $t, Recall: $r")}
// F-measure
val f1Score = metrics.fMeasureByThreshold
f1Score.collect.foreach { case (t, f) =>println(s"Threshold: $t, F-score: $f, Beta = 1")}
总结
近几年来,大数据机器学习和数据挖掘的并行化算法研究成为大数据领域一个较为重要的研究热点。早几年国内外研究者和业界比较关注的是在 Hadoop 平台上的并行化算法设计。然而, HadoopMapReduce 平台由于网络和磁盘读写开销大,难以高效地实现需要大量迭代计算的机器学习并行化算法。随着 UC Berkeley AMPLab 推出的新一代大数据平台 Spark 系统的出现和逐步发展成熟,近年来国内外开始关注在 Spark 平台上如何实现各种机器学习和数据挖掘并行化算法设计。
Spark 允许使用多种编程语言进行编写和操作,主要包括以下几种 :
1.Scala: Scala 是 Spark 的主要开发语言,并且 Spark 最初是为了 Scala 设计的。因此,Scala非常适合用于编写 Spark 的核心算法和功能。
2.Java : Java 是一种通用的编程语言,也是 Spark 支持的语言之一。虽然相对于 Scala 来说Java 代码需要更多的代码量,但是Java 在企业应用中非常流行,并且Java 对于 Spark 的支持一直非常稳定
3.Python: Python 也是 Spark 中广泛使用的编程语言之一。由于其简单易学的特点,Python 成为了数据科学家的首选编程语言,并且 PySpark 扩展使得 Python 可以使用 Spark 的全部API
4.R:R 是另一种流行的数据科学编程语言,也是 Spark 中的可选编程语言之一。SparkR 扩展允许 R 程序员使用 Spark 的全部功能,并且可以使 R 支持更大规模的数据集
总的来说,Spark 主要支持 Scala、Java 和 Python 这=种编程语言,同时还支持 R 语言。不同的编程语言有各自的优缺点,选择合适的编程语言也取决于具体的应用场景和需求