zoukankan      html  css  js  c++  java
  • 大数据技术中SQL的应用

    前言

            确实,关于SQL的学习资料,各类文档在网上到处都是。但它们绝大多数的出发点都局限在旧有关系数据库里,内容近乎千篇一律。而在当今大数据的浪潮下,SQL早就被赋予了新的责任和意义。

            本篇中,笔者将结合过去在A公司和T公司大数据部门的学习工作经历,对传统SQL语法进行一次回顾性学习。同时,思考这门语言在大数据时代的重要意义。

    大数据技术中SQL的作用

            SQL的全称为Structured Query Language,也即结构化查询语言。关系数据库中,SQL是用户使用数据库的基本手段,它能用于创建数据库或者关系,能对数据库中各关系进行增删改查,还能对数据库进行维护和管理等等。而随着分布式计算平台如Hadoop,Spark的兴起,SQL的应用范围发生了较大变化,但它作为数据分析核心的地位,始终没有动摇。在新的背景下,SQL语言具有以下新的意义:

            1. 管理大型分布式数据仓储系统中的"元仓"

            所谓"元仓",可以理解为存放元数据的数据库。关系数据库中叫数据字典(data dictionary),而Hadoop平台的数据仓库工具Hive或Spark平台的Spark SQL则将其称为metastore。在这类分布式的仓储系统里,数据计算都是在分布式平台上进行,但其metastore几乎都是建立在传统的关系数据库(如MySQL)上。

            那么元数据又是什么?对大数据计算分析平台重要吗?

            举个例子,笔者之前所在的A公司其云计算系统可以说是国内业界最强。在该公司的某个巨型大数据离线计算平台的元仓里,主要存放的元数据有各关系的基本信息(表名列名等),数据血缘及调度依赖关系,数据权限关系,数据资产关系  ,数据监控关系等等,如下图所示:

            而基于元仓,还可以开发出类似数据地图系统,数据资产管理系统,数据质量工程系统等高级数据管理工具供公司各类开发人员使用。关于这些数据在分布式平台的采集、管理属于一个非常有趣而有挑战的话题,甚至可能是将来云计算发展的一个重要趋势所在。但由于这部分比较多的涉及到商业机密,本文点到为止了。

            回到主题,读者想必对元仓的重要性有了感悟。而元仓又是存放在关系数据库里,因此要想管理好元仓,你需要熟练掌握SQL。

            2. 操作大数据平台完成数据分析任务

            了解大数据技术的童鞋想必清楚,Hadoop平台没有实现数据库,其核心只在于MapReduce编程框架和Hdfs文件系统。但如果每个计算任务都要写MR代码,那是很让人抓狂的。这点很快就被Apache公司注意到,并针对该问题发布了Hive数据仓库工具。这个工具提供一种类SQL的语言,用户能直接使用它进行数据分析,而它则负责将类SQL语言转化为MR代码,提交Hadoop平台执行。Hive在Hadoop生态圈中的意义恐怕不是最大也是最大之一,很多公司甚至就单纯为了使用Hive而搭建的Hadoop环境。所以为了不纠结于分布式代码缩减开发成本,你需要熟练掌握SQL。

            3. 在线报表展示

            再举个例子,笔者在T公司工作时,在利用大数据分析平台进行数据分析后,最终结果需要提交到在线报表系统以进行可视化展示。但由于数据分析结果的量并不大,同时为了利用关系数据库强一致性等优势,数据分析的结果都要先从大数据平台转入关系数据库,然后让报表系统从关系数据库中取数。所以为了顺利高效的在线发布数据分析结果,你需要熟练掌握SQL。

            4. 其他

            以上部分仅仅是SQL应用的冰山一角。对于从事数据研发的人来说,无论在什么环境框架下,都可能用到这门语言。以致于有些同事将之戏称为"西阔心经":)。

  • 相关阅读:
    开通了
    A computer hardware platform abstraction
    脑机接口入门概览
    JDK自带VM分析工具jps,jstat,jmap,jconsole
    泛型里的super和extend
    动态规划
    用二分法查找的套路(一)
    A computer hardware platform abstraction
    CentOS7安装JDK1.8
    CentOS7如何修改hostname
  • 原文地址:https://www.cnblogs.com/yulu080808/p/8797633.html
Copyright © 2011-2022 走看看