前言
响应战忽局号召,坚信局座忽悠,大数据是第四次工业革命的主题之一,是当下乃至以后最值得投入学习的技术之一。大数据在实际工作中,主要是数据分析师的岗位。
本文针对大数据的主要技术和工具概念进行了汇总,这些技术也是在数据分析师岗位的技术要求中普遍需要的。每个汇总都有或详或略的介绍,并且都附有较为科学完善的指导教程。
文章目录
1. SQL
- 概念
- Structured Query Language,结构化查询语言
- 使用户访问和处理数据库
- ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言
- 作用
- SQL 面向数据库执行查询SQL
- 可从数据库取回数据SQL
- 可在数据库中插入新的记录SQL
- 可更新数据库中的数据SQL
- 可从数据库删除记录SQL
- 可创建新数据库SQL
- 可在数据库中创建新表SQL
- 可在数据库中创建存储过程SQL
- 可在数据库中创建视图SQL
- 可以设置表、存储过程和视图的权限
- 在网站中应用SQL需要:
- RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)
- 使用服务器端脚本语言,比如 PHP 或 ASP
- 使用 SQL 来获取您想要的数据
- 使用 HTML / CSS
-
参考:
2. BI(Business Intelligence)
2.1 ETL(Extract-Transform-Load)
-
概念
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的 分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
-
过程:
-
数据抽取:
从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换。 -
数据的清洗转换:
一般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。
一般情况下这部分工作量是整个ETL的2/3。 -
数据的加载:数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。
- 方法:
- 借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现:此法可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。
- SQL方式实现:此法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。
- ETL工具和SQL相结合:此法综合了前面二种的优点,会极大地提高ETL的开发速度和效率。
- 特点:
- 数据同步。
- 数据量大。
-
参考:
2.2 Tableau
-
概念
用于可视分析数据的商业智能工具。
用户可以创建和分发交互式和可共享的仪表板,以图形和图表的形式描绘数据的趋势,变化和密度。
Tableau可以连接到文件,关系数据源和大数据源来获取和处理数据。该软件允许数据混合和实时协作,这使它非常独特。它被企业,学术研究人员和许多政府用来进行视觉数据分析。它还被定位为Gartner魔力象限中的领导者商业智能和分析平台。 -
适用人群
希望使用Tableau创建,读取,写入和修改商业智能报告的用户。数据分析师或数据科学家。
-
参考
2.3 Pentaho
-
概念
世界上最流行的开源商务智能软件,以工作流为核心的,强调面向解决方案而非工具组件的,基于java平台的商业智能(Business Intelligence,BI)套件BI。
-
内容:
包括一个web server平台和几个工具软件:报表,分析,图表,数据集成,数据挖掘等。
偏向于与业务流程相结合的BI解决方案,侧重于大 中型企业应用。它允许商业分析人员或开发人员创建报表,仪表盘,分析模型,商业规则和 BI 流程。 -
功能和特点:
- 集成管理和开发环境:Eclipse
- ETL工具:Enhydra/Kettle
- OLAP Server:Mondrian
- OLAP展示:JPivot
- 数据挖掘组件:Weka
- 应用服务器和Portal服务器:JBoss
- 单点登陆服务及LDap认证:JOSSO
- 自定义脚本支持:Mozilla Rhino Javascript脚本处理器
-
核心思想:
较其它BI框架而言,pentaho也提出了自己平台的特色,是面向解决方案的思想。
由技术白皮书中节选的一段案例分析,可以了解到,什么是pentaho的“面向解决方案”。
- 业务问题:当一个许可证有效期已满的雇员在一家医疗机构工作时,需要:注意到这个问题,一个代理工人必须替换这个雇员,直到他们的许可证被更新过。注意到何种情况下,一个病人的安全是有风险的和发生风险的可能性。
- 业务目标:提高病人的安全,减少没有许可证的雇员的责任,减少替换没有许可证的雇员时,雇用的代理职员上的花销。
- 当前业务流程:每个经理维护她所在部门的许可证有效期的一个列表。
- 建议解决方案:从一个集中式的数据库,预约生成报表,它根据部门,列出了每个雇员持有的许可证,以及他们当前许可证的有效期。
-
参考:
3. Python
-
概念
一种解释型、面向对象、动态数据类型的高级程序设计语言。
-
特点:
- 代码量少
- 速度相对其他语言较慢
- 大量的库
- 作用:
- 日常任务
- 开发网站
- 游戏后台
3.1 Django
- 概念
- Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
- Django是一个开放源代码的Web应用框架,由Python写成
- Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0
- Django采用了MVC的软件设计模式,即模型M,视图V和控制器C
3.2 Flask
- 概念
- Flask是一个用Python编写的Web应用程序框架。Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
- Flask也被称为“microframework” ,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
4. Hadoop
4.1 HBase
-
概念
HBase是Hadoop的生态系统,是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。如果你需要进行实时读写或者随机访问大规模的数据集的时候,请考虑使用HBase!
HBase作为Google Bigtable的开源实现,Google Bigtable利用GFS作为其文件存储系统类似,则HBase利用Hadoop HDFS作为其文件存储系统;Google通过运行MapReduce来处理Bigtable中的海量数据,同样,HBase利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
[外链图片转存失败(img-3lKyWceb-1563877481965)(en-resource://database/8805:0)]
-
参考
4.2 Hive
-
概念
Hive 是基于Hadoop 构建的一套数据仓库分析系统。
-
作用
- 提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据
- 可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能
- 可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容
- 特点
- 可伸缩(在Hadoop的集群上动态的添加设备)
- 可扩展
- 容错
- 输入格式的松散耦合。
- 局限
- 与关系型数据库的SQL 略有不同,但支持了绝大多数的语句如DDL、DML 以及常见的聚合函数、连接查询、条件查询
- HIVE不适合用于联机,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。如HiveQL不支持更新操作, 也不支持索引和事务, 它的子查询和join操作也很局限, 这是因其底层依赖于Hadoop云平台这一特性决定的, 但其有些特点是SQL所无法企及的
4.3 Impala
-
概念
Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。
换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。
-
特点
-
Impala通过使用标准组件(如HDFS,HBase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可扩展性和灵活性相结合。
-
使用Impala,与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。
-
Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。
-
Impala将相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)用作Apache Hive,为面向批量或实时查询提供熟悉且统一的平台。
-
与Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。
因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive快。
- 优点
-
使用impala,您可以使用传统的SQL知识以极快的速度处理存储在HDFS中的数据。
-
由于在数据驻留(在Hadoop集群上)时执行数据处理,因此在使用Impala时,不需要对存储在Hadoop上的数据进行数据转换和数据移动。
-
使用Impala,您可以访问存储在HDFS,HBase和Amazon s3中的数据,而无需了解Java(MapReduce作业)。您可以使用SQL查询的基本概念访问它们。
-
为了在业务工具中写入查询,数据必须经历复杂的提取 - 变换负载(ETL)周期。但是,使用Impala,此过程缩短了。加载和重组的耗时阶段通过新技术克服,如探索性数据分析和数据发现,使过程更快。
-
Impala正在率先使用Parquet文件格式,这是一种针对数据仓库场景中典型的大规模查询进行优化的柱状存储布局。
- 功能
-
Impala可以根据Apache许可证作为开源免费提供。
-
Impala支持内存中数据处理,即,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动。
-
您可以使用Impala使用类SQL查询访问数据。
-
与其他SQL引擎相比,Impala为HDFS中的数据提供了更快的访问。
-
使用Impala,您可以将数据存储在存储系统中,如HDFS,Apache HBase和Amazon s3。
-
您可以将Impala与业务智能工具(如Tableau,Pentaho,Micro策略和缩放数据)集成。
-
Impala支持各种文件格式,如LZO,序列文件,Avro,RCFile和Parquet。
-
Impala使用Apache Hive的元数据,ODBC驱动程序和SQL语法。
-
关系数据库和Impala
Impala使用类似于SQL和HiveQL的Query语言。 下表描述了SQL和Impala查询语言之间的一些关键差异。
Impala | 关系型数据库 |
---|---|
使用类似于HiveQL的类似SQL的查询语言 | 使用SQL语言 |
无法更新或删除单个记录 | 可以更新或删除单个记录 |
不支持事务 | 支持事务 |
不支持索引 | 支持索引 |
存储和管理大量数据(PB) | 关系数据库处理的数据量较少(TB) |
-
Hive,Hbase和Impala
虽然Cloudera Impala使用与Hive相同的查询语言,元数据和用户界面,但在某些方面它与Hive和HBase不同。 下表介绍了HBase,Hive和Impala之间的比较分析。
[外链图片转存失败(img-ZQMWROeU-1563877481967)(en-resource://database/8803:0)]
- 缺点
-
Impala不提供任何对序列化和反序列化的支持。
-
Impala只能读取文本文件,而不能读取自定义二进制文件。
-
每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。
-
参考
4.4 Kylin
- 概念
- 可扩展超快OLAP引擎:
Kylin是为减少在Hadoop/Spark上百亿规模数据查询延迟而设计 - Hadoop ANSI SQL 接口:
Kylin为Hadoop提供标准SQL支持大部分查询功能 - 交互式查询能力:
通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能 - 多维立方体(MOLAP Cube):
用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体 - 与BI工具无缝整合:
Kylin提供与BI工具的整合能力,如Tableau,PowerBI/Excel,MSTR,QlikSense,Hue和SuperSet
- 其他特性:
- Job管理与监控
- 压缩与编码
- 增量更新
- 利用HBase Coprocessor
- 基于HyperLogLog的Dinstinc Count近似算法
- 友好的web界面以管理,监控和使用立方体
- 项目及表级别的访问控制安全
- 支持LDAP、SSO
5. Spark
-
概念
类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
6. Flink
- 概念
Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务:
- DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。
- DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。
- Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。
此外,Flink还针对特定的应用领域提供了领域库,例如:
- Flink ML,Flink的机器学习库,提供了机器学习Pipelines API并实现了多种机器学习算法。
- Gelly,Flink的图计算库,提供了图计算的相关API及多种图计算算法实现。
7. SEO(Search Engine Optimization)
-
概念
搜索引擎优化是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式。
-
必要性
-
随着网络的发展,网站的数量已经数以亿计,互联网上的信息量呈爆炸性增长,加大了人们寻找目标信息的难度,而搜索引擎的出现给人们寻找信息带来极大的便利,已经成为不可或缺的上网工具。
-
根据人们的使用习惯和心理,在搜索引擎中排名越靠前的网站,被点击的几率就越大,相反,排名越靠后,得到的搜索流量就越少。据统计,全球500强的公司中,有90%以上的公司在公司网站中导入了SEO技术。
-
一般的网络公司因缺乏专业的营销知识和理念,仅从技术的角度出发为您建造网站,美工只管将您的网站设计漂亮,程序员只管实现您要求的功能模块,这样做出来的网站是有缺陷的,不符合搜索引擎的收录要求,所以必须对网站进行全面的针对性优化。
8. SAS
-
概念
一款统计分析软件,SAS用于数据管理,商业智能,预测分析,描述性和规范性分析等。
通过引入JMP(跳转)的统计SAS利用了这是由Macintosh推出的图形用户界面的优势。跳转基本上是用于像六西格玛,设计,质量控制,工程和科学分析的应用程序。
SAS是跨平台的,这意味着你可以在任何操作系统Linux或Windows上运行SAS。 SAS是SAS程序员使用了SAS数据集的操作的若干序列进行的数据分析报告。多年来,SAS公司增加了大量的解决方案和产品组合。它拥有数据治理,数据质量,大数据分析,文本挖掘,欺诈管理,健康科学等解决方案,我们可以放心地假设情景运用SAS解决方案服务每一个业务领域。
-
作用
主要运用于大型数据集。可以对数据进行各种操作:
- 数据管理
- 统计分析
- 报告的形成与完善的图形
- 商业计划
- 运筹与管理项目
- 质量改进
- 应用程序开发
- 数据提取
- 数据转换
- 数据并选择更新改造
-
参考
9. SPSS
-
概念
SPSS是社会统计科学软件包的简称, 其官方全称为IBM SPSS Statistics。SPSS软件包最初由SPSS Inc.于1968年推出,于2009年被IBM收购,主要运用于各领域数据的管理和统计分析。作为世界社会科学数据分析的标准,SPSS操作操作界面极其友好,结果输出界面也很美观,同时还配备十分详细的用户手册。
-
功能
- 数据编辑功能
- 可视化功能
- 表格编辑功能
- 联接其他软件
- 统计功能
- 参考