Spark SQL 之 Temporary View

2023-11-17

Spark SQL 之 Temporary View

spark SQL的 temporary view 是支持原生SQL 的方式之一
spark SQL的 DataFrame 和 DataSet 均可以通过注册 temporary view 的方式来形成视图
案例一: 通过 DataFrame 的方式创建
val spark = SparkSession.builder().config(conf).getOrCreate();
spark.catalog.listTables().show();
val view = spark.createDataFrame(List(Person("Jason",34,"DBA"),Person("Tom",20,"Dev"))).createOrReplaceTempView("V_Person");
spark.catalog.listTables().show();
spark.catalog.listColumns("V_Person").show();

spark.close();
输出日志
+----+--------+-----------+---------+-----------+
|name|database|description|tableType|isTemporary|
+----+--------+-----------+---------+-----------+
+----+--------+-----------+---------+-----------+

+--------+--------+-----------+---------+-----------+
|    name|database|description|tableType|isTemporary|
+--------+--------+-----------+---------+-----------+
|v_person|    null|       null|TEMPORARY|       true|
+--------+--------+-----------+---------+-----------+

+----+-----------+--------+--------+-----------+--------+
|name|description|dataType|nullable|isPartition|isBucket|
+----+-----------+--------+--------+-----------+--------+
|name|       null|  string|    true|      false|   false|
| age|       null|     int|    true|      false|   false|
| job|       null|  string|    true|      false|   false|
+----+-----------+--------+--------+-----------+--------+
案例二: Spark sql 支持分组,分析函数等高级查询
spark.sql("SELECT * from V_Person").show();
spark.sql("SELECT count(1) from V_Person").show();
spark.sql("SELECT name,age,job,rank() over(partition by name order by age) as rk from V_Person").show();
输出日志
+-----+---+-------+
| name|age|    job|
+-----+---+-------+
|Jason| 34|BigData|
|  Tom| 20|    Dev|
|Jason| 28|    DBA|
+-----+---+-------+
+--------+
|count(1)|
+--------+
|       3|
+--------+
+-----+---+-------+---+
| name|age|    job| rk|
+-----+---+-------+---+
|Jason| 28|    DBA|  1|
|Jason| 34|BigData|  2|
|  Tom| 20|    Dev|  1|
+-----+---+-------+---+
案例三: 通过 DataSet 的方式创建
val spark = SparkSession.builder().config(conf).getOrCreate();
spark.catalog.listTables().show();
import spark.implicits._;
spark.createDataset(List(Person("Jason",34,"BigData"),Person("Tom",20,"Dev"),Person("Jason",28,"DBA"))).as[Person].createOrReplaceTempView("V_Person");
spark.catalog.listTables().show();
spark.catalog.listColumns("V_Person").show();
spark.sql("SELECT * from V_Person").show();
spark.sql("SELECT count(1) from V_Person").show();
spark.sql("SELECT name,age,job,rank() over(partition by name order by age) as rk from V_Person").show();


spark.close();
输出日志
+-----+---+-------+
| name|age|    job|
+-----+---+-------+
|Jason| 34|BigData|
|  Tom| 20|    Dev|
|Jason| 28|    DBA|
+-----+---+-------+
+--------+
|count(1)|
+--------+
|       3|
+--------+
+-----+---+-------+---+
| name|age|    job| rk|
+-----+---+-------+---+
|Jason| 28|    DBA|  1|
|Jason| 34|BigData|  2|
|  Tom| 20|    Dev|  1|
+-----+---+-------+---+
DataFrame 的结果集写入到文件中
val spark = SparkSession.builder().config(conf).getOrCreate();
import spark.implicits._;
spark.createDataset(List(Person("Jason",34,"BigData"),Person("Tom",20,"Dev"),Person("Jason",28,"DBA"))).as[Person].createOrReplaceTempView("V_Person");
val df = spark.sql("SELECT name,age,job,rank() over(partition by name order by age) as rk from V_Person").toDF();
df.write.format("CSV").option("sep","#").save("file:///d://result_jason.csv");
spark.close();
DataFrame 的结果集写入到内存中
 val spark = SparkSession.builder().config(conf).getOrCreate();
 import spark.implicits._;
 val ds = spark.createDataset(List(Person("Jason",34,"BigData"),Person("Tom",20,"Dev"),Person("Jason",28,"DBA"))).as[Person];
 ds.cache();
 ds.count();
 Thread.sleep(600000);
 spark.close();
控制台观察

http://10.70.64.37:4040/storage/

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark SQL 之 Temporary View 的相关文章

  • 分类算法之朴素贝叶斯

    1 朴素贝叶斯分类算法 朴素贝叶斯 Naive Bayes NB 算法是基于贝叶斯定理与特征条件独立假设的分类方法 该算法是有监督的学习算法 解决的是分类问题 是将一个未知样本分到几个预先已知类别的过程 朴素贝叶斯的思想就是根据某些个先验概
  • SparkStreaming知识总结

    一 流式计算的概述 1 1 什么是流式计算 1 数据流与静态数据的区别 数据流指的就是不断产生的数据 是源源不断 不会停止 静态数据指的就是存储在磁盘中的固定的数据 2 流式计算的概念 就是对数据流进行计算 由于数据是炼苗不断的产生的 所以
  • spark集群搭建与mysql元数据管理

    找个spark集群搭建是针对于上一篇hadoop的基础上搭建的 所以spark的版本也是要按照着hadoop版本进行下载 1 解压spark 修改spark的 etc profile的home目录 2 安装SCALA 并配置SCALA HO
  • spark创建maven工程创建scala目录并编译

    背景 我创建spark的maven工程的时候 在java目录同级还创建了一个scala目录 这就得考虑编译相关的事了 解决 1 创建source folder 如下图所示 直接创建就好了 2 编译带来的问题 编译的时候发现一个问题 就是在s
  • Spark性能调优之Shuffle调优

    Spark性能调优之Shuffle调优 Spark底层shuffle的传输方式是使用netty传输 netty在进行网络传输的过程会申请堆外内存 netty是零拷贝 所以使用了堆外内存 shuffle过程中常出现的问题 常见问题一 redu
  • 11.Linux下Spark的安装配置以及spark-shell的启动和 Spark集群环境搭建

    本案例软件包 链接 https pan baidu com s 1zABhjj2umontXe2CYBW DQ 提取码 1123 若链接失效在下面评论 我会及时更新 目录 1 安装Spark 1 先用xftp将安装包传到home hadoo
  • spark-shell 加载本地文件报错 java.io.FileNotFoundException

    学习spark shell 时候发现一个问题 从本地文件加载数据生成RDD 报错 文件找不到 原因 spark shell 如果启动了集群模式 真正负责计算的executor会在 该executor所在的 worker节点上读取文件 并不是
  • 大数据面试题Spark篇(1)

    目录 1 spark数据倾斜 2 Spark为什么比mapreduce快 3 hadoop和spark使用场景 4 spark宕机怎么迅速恢复 5 RDD持久化原理 6 checkpoint检查点机制 7 checkpoint和持久化的区别
  • Spark on Kubernetes 与 Spark on Yarn 不完全对比分析

    前言 Apache Spark 是目前应用最广泛的大数据分析计算工具之一 它擅长于批处理和实时流处理 并支持机器学习 人工智能 自然语言处理和数据分析应用 随着 Spark 越来越受欢迎 使用量越来越大 狭义上的 Hadoop MR 技术栈
  • spark dataframe 数据类型转换

    文章目录 1 spark sql数据类型 数字类型 日期类型 复杂类型 2 spark sql和scala数据类型对比 3 spark sql数据类型转换示例 代码 输出 1 spark sql数据类型 数字类型 ByteType 代表一个
  • 大数据相关常用软件下载地址集锦

    文章目录 每日一句正能量 前言 一 软件下载地址如下 二 文档地址如下 结语 每日一句正能量 生命中有一些人与我们擦肩了 却来不及遇见 遇见了 却来不及相识 相识了 却来不及熟悉 熟悉了 却还是要说再见 前言 由于大数据开发中经常需要用到Z
  • dolphinschedule使用shell任务结束状态研究

    背景 配置的dolphin任务 使用的是shell shell里包含了spark submit 如下截图 dolphin shell 介绍完毕 开始说明现象 有天有人调整了集群的cdp配置 executor cores max 1 我之前这
  • 【Spark NLP】第 7 章:分类和回归

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 记一次Spark打包错误:object java.lang.Object in compiler mirror

    使用maven compile和package 一直报错scala reflect internal MissingRequirementError object scala runtime in compiler mirror not f
  • spark中repartition和coalesce的区别

    总的来讲 两者 对是否允许shuffle 不同 coalesce numPartitions shuffle false repartition numPartitions repartition 其实是 coalesce 中参数shuff
  • spark内存模型

    Spark 1 6 开始使用了统一内存管理模块 UnifiedMemoryManager 并引入了堆外内存 Off heap memory 1 6之前的内存管理就不进行介绍了 spark堆内和堆外内存模型的示意图 注意 堆外内存是依赖于wo
  • 数据中台-让数据用起来-6

    文章目录 第六章 数据开发 数据价值提炼工厂 6 1 数据计算能力的4种类型 6 1 1 批计算 6 1 2 流计算 6 1 3 在线查询 6 1 4 即席分析 6 2 离线开发 1 作业调度 2 基线控制 3 异构存储 4 代码校验 5
  • Spark的常用概念总结

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 基本概念 1 RDD的生成 2 RDD的存储 3 Dependency 4 Transformation和Action 4 1 Transformatio
  • sparkstreamming 消费kafka(1)

    pom
  • spark SQL基础教程

    1 sparkSQL入门 sparksql专门用于处理结构化的数据 而RDD还可以处理非结构化的数据 sparksql的优点之一是sparkfsql使用统一的api读取不同的数据 第二个优点是可以在语言中使用其他语言 例如python 另外

随机推荐

  • 解决nginx报错:502 Bad Gateway以及504 Gateway Time-out问题

    wordpress及宝塔面板的基本环节 出现nginx错误 502 Bad Gateway 502 Bad Gateway以及504 Gateway Time out 504 Gateway Time out问题后的解决办法 更多分类文章
  • Intellij IDEA 自动生成 serialVersionUID

    Setting gt Inspections gt Serialization issues gt Serializable class without serialVersionUID 选上以后 在你的class中 Alt Enter就会
  • 网络安全行业的那些岗位

    网络安全行业 正在蓬勃发展 想要找网络安全岗位的 可以参考这篇文章 一 网络安全岗位 1 需要网络安全人员的企业 有三种企业招聘网络安全人员 乙方企业 甲方企业 国有企业 乙方企业是专门从事网络安全行业的企业 为客户提供安全产品 如防火墙
  • VMware vRealize Suite 8.8.0

    https pan baidu com s 16 VtEGgAMia8vLjMweHjGA 输入提示信息 j323 目录 VMware vRealize Suite 2019 8 8 0 百度网盘群共享 629229614 VMware爱好
  • 抖音,B站,小红书三大平台品牌投放特征与建议

    目前 小红书 抖音 B站作为品牌投放的主要平台 应该如何选择 一 抖音 平台特征 用户类型 抖音用户男女均衡 以19 30岁年龄阶段用户为主 一二线城市用户偏多 南方用户偏多 内容形式 表演剧情 vlog 颜值出境等丰富多样的短视频展示形式
  • 【雅思备考】写作表达积累

    小作文 Line graph amount of source of provided generating 用来描述来源 means of xxx generation 生产方式 over a period of over the per
  • 【重磅推荐】vue之web3.js以太坊开发总结与完整案例!

    一个完整的Vue web3 js 基于Metamask开发测试和正式上线 FirstContract sol文件 pragma solidity gt 0 4 24 lt 0 7 0 contract FirstContract strin
  • www外部异步加载(不卡)-适合大量加载

    www外部异步加载 不卡 适合大量加载
  • 第一二天作业-BGP MPLS + OSPF分流互备做法

    三 MPLS OSPF分流互备做法 MPLS OSPF分流互备做法配置命令 在中间骨干区域所有路由器先配置OSPF 然后在中间骨干区域所有路由器上配置MPLS 先创建mpls lsr id 在全局开启mpls 在全局开启mpls ldp 在
  • Linux操作系统的层次与组成

    1 Linux操作系统的层次结构 简单来说 Linux操作系统整体分为三层 1 硬件系统 包括CPU 内存 硬盘 网卡等 2 内核 这是操作系统的核心 负责管理硬件系统 同时为上层的应用程序提供操作接口 3 用户进程 表示计算机中运行的所有
  • java版微信和支付宝 支付的调起 和 回调

    写下项目中经常用到的微信和支付宝支付的拉起和回调的代码 1 支付参数和退款参数的封装 package co yixiang modules storePaymentOrder payment dto import lombok Data 支
  • tensorflow训练的模型,用C++ 部署,需要的看过来

    目录 1 先准备tensorflow 和 opencv 的lib 2 项目配置就不说了 3 试一下效果 4 代码 首先 感谢一下rockingdingo Issues rockingdingo tensorflow tutorial Git
  • 入行IT,为什么建议你学Java?

    计算机编程语言 顾名思义 是人用来跟计算机交流的编程语言 学好一门热门的计算机编程语言进入IT行业 获得较高的薪资是没有问题的 关键是热门的计算机编程语言超级多 计算机编程语言入门学什么好 当然是Java 想必很多朋友也很好奇 如此多的计算
  • 【Web方向】 PHP代码审计 CTF题目wp1

    目录 一 第一步 二 第二步 三 第三步 四 第四步 README 一 第一步 分析这道题 是要求使判断条件符合 然后输出flag 第一个if语句是不能直接给data赋值Welcome to CTF的 否则会这样无反应 查了下才知道这是因为
  • 四十一.枚举问题2.生理周期

    生理周期 解题思路 从d 1天开始 一直试到第21252天 对其中每个日期k 看是否满足 k p 23 0 k e 28 0 k i 33 0 include
  • 全自动高清录播服务器,全自动高清录播服务器 高清录播系统

    高清录播系统外观参数 规格参数是了解一台设备的基础 多家高清录播服务器对比之后发现虽有小异 却基本相同 那如何从外观参数上决出移动录播主机的是否高能呢 从外观看常规移动录播主机大小与功能成正比 其次 常规的移动录播主机虽配有高频 CPU 功
  • (Ext基础篇) 弹出窗口

    从外观上来讲 浏览器自带的alert confirm prompt等对话框并不好看 而且配置也不灵活 诸如按钮的添加 删除 以及修改按下按钮所触发的事件等操作都非常难以执行 而在EXT的msgbox里都能实现 而且外观相当漂亮 本节将详细介
  • Idea内存占用过高解决方法

    问题描述 大多数人都知道使用idea时 发现idea内存消耗比较严重 尤其开启了idea后 CPU占比可以直接飙升到100 这主要体现在刚启动的时候 系统的内存高达80 以上 甚至风扇呼呼作响 于是开始找各种解决方案 目前 就我个人电脑来说
  • Ruby on Rails微信开发1——开发模式的启用与接口配置

    参照博客 027 微信公众帐号开发教程第3篇 开发模式启用及接口配置 根据微信开发者文档 启用公共平台开发者模式并进行接口配置流程如下 加密 校验流程如下 1 将token timestamp nonce三个参数进行字典序排序 2 将三个参
  • Spark SQL 之 Temporary View

    Spark SQL 之 Temporary View spark SQL的 temporary view 是支持原生SQL 的方式之一 spark SQL的 DataFrame 和 DataSet 均可以通过注册 temporary vie