DataFrame

news/2024/11/15 1:21:25/

目录

  • 一、创建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.rdddf.show()println("-" * 100)rdd2.collect().foreach(println)

在这里插入图片描述


http://www.ppmy.cn/news/1546032.html

相关文章

SQL进阶技巧:如何计算复合增长率?

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 复合增长率是第N期的数据除以第一期的基准数据,然后开N-1次方再减去1得到的结果。假如2018年的产品销售额为10000,2019年的产品销售额为12500,2020年的产品销售额为15000(销售额单位省略,下同)​。那么这两…

【Ag-Grid】 使用笔记 Vue3 + Vite(一)

文章目录 安装基础使用列数据可编辑列数据选择填入行数据可选择添加分页信息表头整体添加模糊筛选让某一个 Cell 或者 Row 变色 参考代码基本代码整体代码(一) 安装 首先用 vite 脚手架搭建一个空的项目,然后依赖安装 pnpm install ag-grid…

最新三维视觉下的扩散模型综述——Diffusion Models in 3D Vision: A Survey

目录 摘要 一、引言 二、扩散模型简介 A.扩散模型的介绍 B.扩散模型的数学基础 C.扩散模型的变体 D.三维视觉中的生成过程 三、三维视觉基础 A.三维表示 B.三维视觉中的深度学习方法 C.3D视觉中的挑战 四、三维扩散生成任务 A.无条件生成 B.图像到三维 C.文本到…

探索 C++20:C++ 的新纪元

探索 C20:C 的新纪元 对于那些热爱 C 的程序员们,当看到 C20 的发布,应该多少有些兴奋吧,因为C20 带来了许多引人注目的新特性,让语言变得更具表现力、更高效,并且在编写和维护代码方面极大地提升了体验&a…

华为OD机试 - 无重复字符的元素长度乘积的最大值(Python/JS/C/C++ 2024 C卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

在 hiveSQL 中判断一个字段是否包含某个值

在 hiveSQL 中判断一个字段是否包含某个值是在写sql时经常遇到的问题,本文将通过下述案例用五种方法进行解决 数据准备: 题目:查找姓名中含有”i“的员工信息 CREATE TABLE employee (name STRING,age INT );INSERT INTO employee VALUES(…

Java基础——类和对象的定义链表的创建,输出

目录 什么是类? 什么是对象? 如何创建链表? 尾插法: 头插法: 输出链表的长度 输出链表的值 什么是类? 创建Java程序必须创建一个类class. .java程序需要经过javac指令将文件翻译为.class字节码文件&#xff0c…

高效集成:聚水潭采购数据同步到MySQL

聚水潭数据集成到MySQL的技术案例分享 在本次技术案例中,我们将聚焦于如何通过轻易云数据集成平台,将聚水潭系统中的采购入库单数据高效、准确地集成到MySQL数据库中。具体方案名称为“聚水潭-采购入库单-->BI阿尼三-采购入库表_copy”。 首先&#…