zoukankan      html  css  js  c++  java
  • SparkSQL基础

    * SparkSQL基础

    起源:

    1、在三四年前,Hive可以说是SQL on Hadoop的唯一选择,负责将SQL编译成可扩展的MapReduce作业。鉴于Hive的性能以及与Spark的兼容,Shark项目由此而生。

    2、Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。

    3、Shark的最大特性就是快和与Hive的完全兼容,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。

    历史:

    1、在2014年7月1日的Spark Summit上,Databricks宣布终止对Shark的开发,将重点放到Spark SQL上。

    2、Databricks表示,Spark SQL将涵盖Shark的所有特性,用户可以从Shark 0.9进行无缝的升级。

    3、Databricks推广的Shark相关项目一共有两个,分别是Spark SQL和新的Hive on Spark(HIVE-7292)

    4、Databricks表示,Shark更多是对Hive的改造,替换了Hive的物理执行引擎,因此会有一个很快的速度。然而,不容忽视的是,Shark继承了大量的Hive代码,因此给优化和维护带来了大量的麻烦。

    SparkSQL与HIVE集成

    1、拷贝hive-site.xml到spark-conf目录下

    2、$ mkdir externaljars

    3、拷贝hive下面的mysql驱动到spark的externaljars目录下

    4、启动Spark-Shell

    $ bin/spark-shell --master local[2] --jars externaljars/mysql-connector-java-5.1.27-bin.jar

    在SparkSQL中读取表的两种方式:

    方式一:

    直接使用sqlContext对象执行sql语句,返回一个DataFrame对象,然后我们就可以show一下表中的内容了

    scala> val df = sqlContext.sql("select * from track_log")

    scala> df.show

    方式二:

    使用DSL(Domain specific language)语句

    scala> val df = sqlContext.table("track_log")

    scala> df.select("id", "sessionid").show

    测试练习:

    案例中涉及到的数据在之前的Hive章节中已经有所介绍,数据也提供了传送门下载地址,不再赘述,内容如下:

     
     

    案例一:尝试使用sqlContext查询一张表,将部门编号相同的信息统一join到一起。

     
     

    案例二:尝试使用spark-sql运行如下命令

    Step1、启动spark-sql

    $ bin/spark-sql

    Step2、将表直接缓存到内存中,在4040端口即可查看缓存到的表数据占用内存的大小,操作如下:

    缓存表

    spark-sql> cache table track_log

    撤销缓存的表

    spark-sql>uncache table track_log

    案例三:每个部门的工资按照降序排列

    可以使用SparkSQL执行如下代码:

     
     

    如果我们只想展示出每个部门前三名的工资,可以这样操作:

     
     

    当然了,求个平均什么的,再正常不过了。

    * 总结

    只要你的SQL语句用得好,sparkCore理解的通透,Hive玩的6,SparkSQL就会很简单。:)


    个人微博:http://weibo.com/seal13

    QQ大数据技术交流群(广告勿入):476966007



    作者:Z尽际
    链接:https://www.jianshu.com/p/7408b03a3c92
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    吴裕雄--天生自然 R语言开发学习:图形初阶
    吴裕雄--天生自然 R语言开发学习:导入数据
    如何基于阿里云搭建适合初创企业的轻量级架构?
    基于协同过滤算法的推荐
    重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准
    完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
    阿里云物联网边缘计算加载MQTT驱动
    阿里云物联网平台体验(树莓派+Python篇)
    RAM SSO功能重磅发布 —— 满足客户使用企业本地账号登录阿里云
    阿里云高级技术专家带你全面了解云主机性能评测
  • 原文地址:https://www.cnblogs.com/wzlbigdata/p/8277753.html
Copyright © 2011-2022 走看看