为了账号安全,请及时绑定邮箱和手机立即绑定
  • DataFrame  Spark平台的分布式弹性数据集

    DataFrame RDD为基础的分布式数据集, 是Row对象的集合

    DataSet是 DataFrame的一个特例, 强类型数据集

        DF 对 RDD的优势:

    DF提供数据的结构信息

    DF定制化内存管理, 数据存放于JVM堆外内存

    DF先转换为逻辑计划在执行,对任何语言执行效率一样

    DF提供更丰富API

        DataSet 对比DataFrame优点:

    具备DF优点

    Api面向对象

    #创建DataFrame方法:  读文件或者 RDD转换为DF
    sparkSession.read.json()
    sparkSession.read.csv()
    
    #RDD转化为DF
    #通过自定义的case class
    object MyProject{
        case class Person(name:String, age:Int)  #两个列name和age
            
        def main(args: Array[String]): Unit={
            val sparkSession = SparkSession
                .builder()
                .master(master="local")    #本地运行
                .getOrCreate()
            val sparkContext = sparkSession.sparkContext
            val rdd = sparkContext.textFile("")
            
            val rowRDD = rdd.map(_.split(" "))  #每一行空格切割
                .map(x =>Person(x(0),x(1).toInt))  #rdd和caseClass关联
            
            #执行toDF()方法将RDD转换为DF
            import sparkSession.implicits._
            val df = rowRDD.toDF()
            
            df.show()
            
            sparkSession.stop()
        }
    }
    
    #通过自定义schema
    #val rdd后开始
    val schemaField = "name, age"
    val schemaString = schemaField.split(",")
    val schema = StructType(
        List(
            StructField(schemaString(0).StringType, nullable=true),
            StructField(schemaString(1).IntegerType, nullable=true)
        )
    )
    #生成Row类型参数RDD
    val rowRDD = rdd.map(_.split(" "))
        .map(x =>Row(x(0),x(1).toInt))
    val df = sparkSession.createDataFrame(rowRDD,schema)  #转换成df
    #DataFrame转换为RDD
    val rdd = df.rdd
    
    #创建Dataset:
    #df转化为dataset
    import sparkSession.implicits_
    val ds = df.as[Person]   #因为Row对象是Person对象
    
    #rdd转换为dataset
    import sparkSession.implicits_
    val ds = sparkSession.createDataset(rdd)
    
    ##RDD和datatset
    toDS() rdd->Dataset
    rdd() Dataset->rdd
    ##Dataset和DataFrame
    toDF() Dataset->DataFrame
    as[ElementTyle] Dataframe->dataset
    查看全部
  • Spark SQL 逻辑计划- 物理计划 -优化

    查看全部
  • Spark SQL 分布式SQL引擎

    底层依赖RDD, 处理结构化数据的一个模块

    入口:SparkSession (2.0之后)

    //Scala 不需要hive则不需要hivesupport
    val spark = SparkSession.builder().enableHiveSupport().getOrCreate

    Spark SQL和hive区别:

    Hive基于Mapreduce框架实现SQL操作

    Spark SQL拥有Catalyst优化器, 支持不同数据源

    Spark SQL没有自己的存储, Hive集成HDFS 

    SparkSQL没有自己的元数据管理,要依赖Hive

    Spark SQL 访问 Hive 仓库:

    1. SPARK_HOME/conf 下添加 hive-site.xml

    2. 启动 thriftserver服务 : SPARK_HOME/sbin/start-thriftserver.sh

    查看全部
    0 采集 收起 来源:Spark SQL和Hive

    2022-04-01

  • 事实表,类似于全量表,维度表类似于增量表
    查看全部
  • 66666666666666

    查看全部
    0 采集 收起 来源:课程简介

    2019-12-25

  • spark sql区别与hive 1. spark sql在内存中运算 2. spark sql 依赖catalst进行sql解析 3. spark sql访问hive数据方式:spark sql—》thriftServer解析器—》metadata—》hive元数据
    查看全部
  • 记笔记
    查看全部
    0 采集 收起 来源:课程简介

    2019-10-30

  • sparksql和hive对比

    sparksql有catalyst优化器

    sparksql 如何访问hive:hive-site.xml放到SPARK_HOME/conf

                                  然后/$SPARK_HOME/sbin/start-thriftserver.sh

    查看全部
    0 采集 收起 来源:Spark SQL和Hive

    2019-10-24

  • 很好
    查看全部
    0 采集 收起 来源:课程简介

    2019-09-04

举报

0/150
提交
取消
课程须知
本课程不是Spark零基础入门课程,需要同学们在学习之前: 1、熟悉Spark的RDD是什么 2、用Spark Shell写过简单的迭代运算 3、使用过Scala开发简单的Spark项目 4、了解Hadoop的HDFS原理 5、了解Hive的简单使用 6、了解Linux基本命令 7、有Java开发基础
老师告诉你能学到什么?
1、DataFrame/DataSet查询操作(过滤,分组,排序) 2、Spark SQL自定义函数和窗口函数 3、Parquet列式存储

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!