从0开始学大数据
李智慧
同程艺龙交通首席架构师,前Intel大数据架构师,《大型网站技术架构》作者
立即订阅
14333 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么说每个软件工程师都应该懂大数据技术?
免费
预习模块 (3讲)
预习 01 | 大数据技术发展史:大数据的前世今生
预习 02 | 大数据应用发展史:从搜索引擎到人工智能
预习 03 | 大数据应用领域:数据驱动一切
模块一 Hadoop大数据原理与架构 (7讲)
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
模块二 大数据生态体系主要产品原理与架构 (7讲)
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
模块三 大数据开发实践 (8讲)
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
模块四 大数据平台与系统集成 (6讲)
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
模块五 大数据分析与运营 (5讲)
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
模块六 大数据算法 (6讲)
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
智慧写给你的寄语 (1讲)
所有的不确定都是机会——智慧写给你的新年寄语
结束语 (2讲)
结束语 | 未来的你,有无限可能
第2季回归丨大数据之后,让我们回归后端
从0开始学大数据
登录|注册

11 | Hive是如何让MapReduce实现SQL操作的?

李智慧 2018-11-22
前面我们讲过,MapReduce 的出现大大简化了大数据编程的难度,使得大数据计算不再是高不可攀的技术圣殿,普通工程师也能使用 MapReduce 开发大数据程序。但是对于经常需要进行大数据计算的人,比如从事研究商业智能(BI)的数据分析师来说,他们通常使用 SQL 进行大数据分析和统计,MapReduce 编程还是有一定的门槛。而且如果每次统计和分析都开发相应的 MapReduce 程序,成本也确实太高了。那么有没有更简单的办法,可以直接将 SQL 运行在大数据平台上呢?
在给出答案前,我们先看看如何用 MapReduce 实现 SQL 数据分析。

MapReduce 实现 SQL 的原理

坚持学习到这里的同学一定还记得,我在专栏第 7 期留了一道思考题,对于常见的一条 SQL 分析语句,MapReduce 如何编程实现?
SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;
错过这期内容的同学可以先返回第 7 期文章思考一下这个问题,思考之余也可以看看其他同学给出的方案,我看留言很多同学的思路都是正确的,我们来详细看看 MapReduce 实现 SQL 的原理。
这是一条非常常见的 SQL 统计分析语句,统计不同年龄的用户访问不同网页的兴趣偏好,对于产品运营和设计很有价值。具体数据输入和执行结果请看下面的图示。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(54)

  • 诺侠
    jupyter notebook应该算是一个。
    2018-11-22
    28
  • 此教程适合有一定大数据基础的人,如果是新人,那么肯定是懵懂的
    2018-11-22
    2
    23
  • 李志博
    技术嫁接,我还真搞过2个,1个是selenium + 网上找的代码改本机host 实现 自动测试线上的每台机器的功能,另外1个是 java agent + jd-core (一个反编译软件的底层库)实现profile 监控同时能显示线上跑的真实的代码内容

    作者回复: 赞

    2018-11-22
    1
    19
  • Panmax
    Linux 命令中最常用的管道符 | ,就是运用嫁接最多的地方吧。
    2018-11-22
    13
  • sunlight001
    Jekins之类的持续集成工具,集成了非常多的工具及模块,比如sonar,git,mail等
    2018-11-22
    9
  • 阿神
    老师,您好!hive on spark跟spark sql on hive性能上会一样吗,这两种方案怎么选型
    2018-11-22
    6
  • 西贝木土
    package com.company.sparkcore

    import org.apache.log4j.{Level, Logger}
    import org.apache.spark.{SparkConf, SparkContext}

    /**
      * 使用Spark Core的算子实现简单的join操作
      */
    object JoinBySpark {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf()
          .setAppName(JoinBySpark.getClass.getSimpleName)
          .setMaster("local")
        Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
        Logger.getLogger("org.apache.hadoop").setLevel(Level.OFF)

        val sc = new SparkContext(conf)
        //通过文本文件创建RDD
        val page_viewRDD = sc.textFile("file:///e:/page_view.txt")
        val pv_usersRDD = sc.textFile("file:///e:/pv_users.txt")
        //提取需要的字段,组合成形如(userid,pageid)的RDD
        val userid_pageidRDD = page_viewRDD.map(_.split(",")).map(viewData => (viewData(1), viewData(0)))
        //提取需要的字段,组合成形如(userid,age)的RDD
        val userid_ageRDD = pv_usersRDD.map(_.split(",")).map(userData => (userData(0), userData(1)))
        //对上述的两个RDD执行Join操作,形成形如(userid,(pageid,age))的RDD
        val userid_pageid_ageRDD = userid_pageidRDD.join(userid_ageRDD)
        userid_pageid_ageRDD.collect().foreach(println)
        //对join操作形成的RDD提取pageid、age字段
        val joinRes = userid_pageid_ageRDD.map(upaData => (upaData._2._1, upaData._2._2))
        //打印输出结果
        // (1,32)
        // (1,25)
        // (2,25)
        joinRes.collect().foreach(println)


      }


    }

    作者回复: 赞

    2018-11-22
    5
  • 星辰
    springboot 内置了tomcat 我们无需再为应用配置一个tomcat ,把tomcat嫁接到springboot上。 我看最新的http3.0就是用基于UDP协议的…… 这也算是一种嫁接吧

    作者回复: 是的

    2018-11-23
    4
  • 李老师,我之前买过您的《大型网站技术架构案例》并学习过,我想问下,对于一个程序员说,技术功底应该达到什么程度才可以去接触、学习和实践架构方面得东西呢?

    作者回复: 任何时候都可以接触、学习、实践架构方面的东西。但是即使被人称作资深架构师了,也不要忘了提升自己的技术功底。

    2019-04-20
    3
  • 朱国伟
    李老师 在跟着学的过程中 基本上都是现学的 比如 hive
    https://cwiki.apache.org/confluence/display/Hive/GettingStarted

    在学习课程的过程中 是不是先不用对涉及到的这些大数据技术 如hdfs yarn hive等去做深入了解 只需跑一下GettingStared即可 即有个概念

    作者回复: 非常好的学习方法

    2018-12-15
    3
  • 在路上
    当初接触到ajax时就觉得很神奇,了解其实现原理后发现就是已有的两个技术(Javascript+xml)相结合后产生的技术魅力,这就是1+1>2的效果
    2019-01-08
    2
  • Albert
    Spring Cloud将各种微服务的基础设施集成在一起,Spring Boot简化应用配置和管理依赖,这两者结合在一起,使得微服务应用能够快速开发和构建
    2018-11-22
    2
  • 落叶飞逝的恋
    多种技术组合而成的软件产品太多了,比如:语音识别技术与搜索引擎技术组合成语音识别技术,比如iphone上的siri 。还有人脸识别技术与监控技术结合及公安系统组合,就可以马路闯红灯,直接暴露闯红灯的身份。
    2018-11-22
    2
  • mt11912
    postgresql 数据库支持json数据类型,将结构化数据和非结构化数据整合在一起。
    2019-04-18
    1
  • 不似旧日
    大数据框架可以执行sql,能执行sql的框架有hadoop的hive spark的sparkSQL,sparkSQL的执行速度要快于hive,
    由于大数据框架能执行sql那么是不是可以把这个框架当做数据库来看待?java就能调用大数据服务操作数据了?

    作者回复: 可以呀,hive就有jdbc供java调用

    2019-01-19
    1
  • 木白
    集成的例子太多了,其实目前稍微复杂点的软件都是各种不同的功能结合在一起的。比如微信和支付宝这种,把社交和支付(或者说红包这种特殊的功能)结合起来,我们现在回头去看,可想想到有社交的地方就会有金钱往来,好像是那么理所当然。但是最开始聊天软件出现了好多年业没有出现相应的产品。也许技术和政策是一部分原因,这我就可能不太清楚了。
    2019-01-07
    1
  • 星辰
    婚姻也算是一种嫁接吗?
    2018-11-24
    1
  • hua168
    openstack把各个功粘合在一起,话说openstack我们要学吗?怎么判断一个工具需要不需要学习?还有一个特迷茫的事,30多岁学编程,大数据,没经验,能找到工作吗?😂😂
    2018-11-23
    1
  • 星辰
    智能手机就是嘛! 以前的手机只能打电话,现在可以拍照、打电话、录音,也可以远程操控家电……等等 把操控其他事物的技术嫁接到手机上……

    作者回复: 😁

    2018-11-23
    1
  • 梦幻之梦想
    操作系统
    2018-11-22
    1
收起评论
54
返回
顶部