当前位置: 首页 > article >正文

DataFrame

目录

  • 一、创建DataFrame
  • 二、Sql语法
  • 三、DSL语法
  • 四、RDD与DataFrame互相转换

一、创建DataFrame

在SparkSql中SparkSession是创建DataFrame和执行Sql的入口,创建DataFrame有三种方式:

  1. 通过Spark的数据源进行创建
    在这里插入图片描述

  2. 从一个存在的RDD进行转换

  3. 从Hive Table进行查询返回

二、Sql语法

Sql语法风格是指我们查询数据的时候使用Sql语句来查询,这种风格的查询必须要有临时视图或者全局视图来辅助

在这里插入图片描述
注意:
普通临时表是Session范围内的,如果想应用范围内有效,可以使用全局临时表,使用全局临时表时需要全路径访问,如:global_temp.people

对于DataFrame创建一个全局表:

df.createGlobalTempView("people")

通过Sql语句实现查询全表

在这里插入图片描述

三、DSL语法

DataFrame提供了一个特定领域语言(domain-specific language,DSL)去管理结构化的数据,可以在Scala,Java,Python和R中使用DSL,使用DSL语法风格不必去创建临时视图了

在这里插入图片描述
注意:
当涉及到运算的时候,每列都必须使用$,或者采用引号表达式:单引号+字段名
在这里插入图片描述
起别名:
在这里插入图片描述
查看age大于等于30的数据:
在这里插入图片描述
根据 age 分组,查看数据条数
在这里插入图片描述

四、RDD与DataFrame互相转换

在IDEA中开发程序时,如果需要RDD与DF或者DS之间互相操作,那么需要引入:

import spark.implicits._

这里的spark不是scala中的包名,而是创建的sparkSession对象的变量名称,所以必须先创建SparkSession对象再导入,这里的spark对象不能使用var声明,因为scala只支持val修饰的对象的引入,spark-shell中无需导入,自动完成此操作

在这里插入图片描述
用var修饰的话,编译不通过

rdd与dataframe互相转换:

 val spark: SparkSession = SparkSession
      .builder()
      .master("local[*]")
      .getOrCreate()

    import spark.implicits._

    val rdd: RDD[Int] = spark.sparkContext.makeRDD(List(1,2,3,4,5))

    val df: DataFrame = rdd.toDF("id")

    val rdd2: RDD[Row] = df.rdd

    df.show()

    println("-" * 100)

    rdd2.collect().foreach(println)

在这里插入图片描述


http://www.kler.cn/a/388294.html

相关文章:

  • 【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)
  • 使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径
  • void * 指针与整数进行加减运算
  • srs http-flv处理过程
  • 数据库管理-第260期 业务向前,数据库向后(20241111)
  • 揭开 gRPC、RPC 、TCP和UDP 的通信奥秘
  • Spring高手之路26——全方位掌握事务监听器
  • 第02章 CentOS基本操作
  • 腾讯云服务器到期网站迁移到新服务器参考指南
  • IMS高压发生器维修高压电源维修XRG100/1000
  • Spark的Shuffle过程
  • 【西门子官方车轨级S7-1500F安全PLC标准 SICAR架构应用实例】
  • 软件定义网络(SDN)在企业网络中的应用
  • 什么是python爬虫?
  • HashMap(深入源码追踪)
  • 005.精读《B-Tree vs LSM-Tree》
  • Linux 内核中断描述符 (irq_desc) 的初始化与动态分配机制详解
  • vue全家桶都有哪些?
  • C++ STL CookBook 6:STL Containers (I)
  • web语义化
  • leetcode hot100【LeetCode 79.单词搜索】java实现
  • 数据库基础(5) . DCL
  • 笔记整理—linux驱动开发部分(7)misc类设备(杂项设备)
  • nginx的相关命令
  • Nginx(编译)+Lua脚本+Redis 实现自动封禁访问频率过高IP
  • Type-C转DP线方案