12.spark学习之旅之sparksql(六)

1. Spark SQL 概述

  • Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用
  • 为什么学习Spark SQL
    我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!
    • 易整合
    • 统一的数据访问方式
    • 兼容hive
    • 标准的数据链接

2. spark中 RDD、DataFrame、Dataset的关系及区别

3. DataFrame概述

  • 与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上 看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低。由于与R和Pandas的DataFrame类似,Spark DataFrame很好地继承了传统单机数据分析的开发体验。
  • RDD是分布式的Java对象集合,DataFrame是分布式的Row对象集合

3.1. 官方api

3.2. 通过反射推断Schema

import org.apache.spark.sql.{DataFrame, SparkSession}

case class Person(id: Int, name: String, age: Int)

/**
 * 通过反射推断Schema
 */
object SparkSqlDemo {
  def main(args: Array[String]): Unit = {
    // 初始化
    val spark = SparkSession.builder()
      .appName("spark sql basic example")
      .master("local")
      .getOrCreate()
    // RDD --> DataFrame
    import spark.implicits._
    val peopleDF : DataFrame = spark.sparkContext.textFile("hdfs://1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值