Spark SQL—1—简介、应用

  1. Spark SQL比较HiveSQL
    1. Hive:将Hive SQL转换成MapReduce然后提交到集群上执行,简化了编写MapReduce的程序
      1. 由于MapReduce这种计算模型执行效率比较慢。
    2. Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快
  2. Spark SQL应用场景
    1. ETL:
      1. Extract抽取
        1. 数据源:HDFS、S3、本地、关系数据库(Oracle、MySQL)、NOSQL(HBase、Cassandra)。。
        2. 数据类型:json、csv、xml。
      2. Transform清洗空值的处理、拆分数据、规范化数格式、数据替换。。。
      3. Load加载:存储到各种数据源中
    2. 分布式查询:可以作为分布式sql查询引擎,通过jdbc/odbc或指令对数据库进行分布式查询
    3. 结合spark streaming,处理实时数据流
    4. 结合MTLlib进行机器学习
  3. DataFrame
    1. 与RDD类似,也是一个分布式数据容器。
    2. DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。
    3. 同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。
    4. 从API易用性的角度上 看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低。由于与R和Pandas的DataFrame类似,Spark DataFrame很好地继承了传统单机数据分析的开发体验​​​​​
  4. DateFrame两种编程风格
    1. DSL风格
      //查看DataFrame部分列中的内容
      personDF.select(personDF.col("name")).show
      personDF.select(col("name"), col("age")).show
      personDF.select("name").show
      
      //打印DataFrame的Schema信息
      personDF.printSchema
      
      //查询所有的name和age,并将age+1
      personDF.select(col("id"), col("name"), col("age") + 1).show
      personDF.select(personDF("id"), personDF("name"), personDF("age") + 1).show
    2. sql风格
      //如果想使用SQL风格的语法,需要将DataFrame注册成表
      personDF.registerTempTable("t_person")
      
      //查询年龄最大的前两名
      sqlContext.sql("select * from t_person order by age desc limit 2").show
      //显示表的Schema信息
      sqlContext.sql("desc t_person").show

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值