iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Spark TempView和GlobalTempView的区别
  • 202
分享到

Spark TempView和GlobalTempView的区别

SparkTempView和GlobalTempView的区别 2015-09-12 16:09:36 202人浏览 绘本
摘要

spark TempView和GlobalTempView的区别 TempView和GlobalTempView在spark的Dataframe中经常使用,两者的区别和应用场景有什么不同。 我们以下面的例子比较下两者的不同。 fr

Spark TempView和GlobalTempView的区别

spark TempView和GlobalTempView的区别

TempView和GlobalTempView在spark的Dataframe中经常使用,两者的区别和应用场景有什么不同。

我们以下面的例子比较下两者的不同。

from pyspark.sql import SparkSession
import numpy as np
import pandas as pd

spark = SparkSession.builder.getOrCreate()
d = np.random.randint(1,100, 5*5).reshape(5,-1)
data = pd.DataFrame(d, columns=list("abcde"))
df = spark.createDataFrame(data)
df.show()
+---+---+---+---+---+
|  a|  b|  c|  d|  e|
+---+---+---+---+---+
| 17| 30| 61| 61| 33|
| 32| 23| 24|  7|  7|
| 47|  6|  4| 95| 34|
| 50| 69| 83| 21| 46|
| 52| 12| 83| 49| 85|
+---+---+---+---+---+

从tempview中取数据

temp = df.createTempView("temp")
temp_sql = "select * from temp where a=50"
res = spark.sql(temp_sql)
res.show()
+---+---+---+---+---+
|  a|  b|  c|  d|  e|
+---+---+---+---+---+
| 50| 69| 83| 21| 46|
+---+---+---+---+---+

从globaltempview中取数据

glob = df.createGlobalTempView("glob")
glob_sql = "select * from global_temp.glob where a = 17"
res2 = spark.sql(glob_sql)
res2.show()
+---+---+---+---+---+
|  a|  b|  c|  d|  e|
+---+---+---+---+---+
| 17| 30| 61| 61| 33|
+---+---+---+---+---+

Globaltempview 数据可以在多个sparkSession中共享

# 创建新的sparkSession
spark2 = spark.newSession()
spark2 == spark
False
# 新的sparkSession可以获取globaltempview中的数据
new_sql = "select * from global_temp.glob where a = 47"
temp = spark2.sql(new_sql)
temp.show()
+---+---+---+---+---+
|  a|  b|  c|  d|  e|
+---+---+---+---+---+
| 47|  6|  4| 95| 34|
+---+---+---+---+---+
# 新的sparkSession无法获取tempview中的数据
# 会提示找不到temp表

new_sql2 = "select * from temp where a = 47"
temp = spark2.sql(new_sql2)
temp.show()
# 使用global_temp前缀也不行
new_sql2 = "select * from global_temp.temp where a = 47"
temp = spark2.sql(new_sql2)
temp.show()
---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
# 此处多行删除异常信息
AnalysisException: "Table or view not found: `global_temp`.`temp`; line 1 pos 14;
"Project [*]
+- "Filter ("a = 47)
   +- "UnresolvedRelation `global_temp`.`temp`
"

tempview删除后无法使用

spark.catalog.dropTempView("temp")
spark.catalog.dropGlobalTempView("glob")

# 报错,找不到table temp
temp_sql2 = "select * from temp where a = 47"
temp = spark.sql(temp_sql2)

# 报错,找不到global_temp.glob,spark和spark2中均报错
glob_sql2 = "select * from global_temp.glob where a = 47"
temp = spark.sql(glob_sql2)
temp = spark2.sql(glob_sql2)

总结

spark中有四个tempview方法

  • df.createGlobalTempView
  • df.createOrReplaceGlobalTempView
  • df.createOrReplaceTempView
  • df.createTempView

replace方法:不存在则直接创建,存在则替换


tempview删除后无法使用

两个删除方法
spark.catalog.dropTempView("temp")
spark.catalog.dropGlobalTempView("glob")


TempView和GlobalTempView的异同

  1. tempview只能在一个sparkSession中使用
  2. GlobaltempView可以在多个sparkSession中共享使用
  3. 但是他们都不能跨Application使用
您可能感兴趣的文档:

--结束END--

本文标题: Spark TempView和GlobalTempView的区别

本文链接: https://www.lsjlt.com/news/6997.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hadoop和Spark的区别有哪些
    Hadoop是一个分布式存储和计算框架,主要用于存储和处理大规模数据。而Spark是一个快速、通用的大数据处理引擎,能够在内存中...
    99+
    2024-03-11
    Hadoop Spark
  • hadoop和spark的区别是什么
    这篇文章主要讲解了“hadoop和spark的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hadoop和spark的区别是什么”吧!主要是从四个方面对Hadoop和spark进行...
    99+
    2023-06-02
  • Hadoop和Spark有什么区别
    这篇文章将为大家详细讲解有关Hadoop和Spark有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。解决问题的层面不一样首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在...
    99+
    2023-06-28
  • Spark中MLlib和ML库的区别是什么
    这篇文章给大家介绍Spark中MLlib和ML库的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。机器学习库(MLlib)MLlib是Spark的机器学习(ML)库。其目标是使实际的机器学习可扩展和容易。在高层...
    99+
    2023-06-19
  • Hadoop和Spark集群技术有哪些区别
    本篇内容主要讲解“Hadoop和Spark集群技术有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop和Spark集群技术有哪些区别”吧!解决问题的层面不一样首先,Hadoop和...
    99+
    2023-06-10
  • Spark中的窄依赖和宽依赖有什么区别
    在Spark中,窄依赖和宽依赖是指不同的RDD之间的依赖关系。它们的区别在于如何执行操作和进行数据分区。 窄依赖(Narrow ...
    99+
    2024-03-04
    Spark
  • LinkedList和ArrayList的区别、Vector和ArrayList的区别
      LinkedList和ArrayList的区别  继承类和实现接口上来讲  他们都实现了List接口下的方法,他们都允许重复,允许null,并且有序的集合。  LinkedList实现了Deque接口。  底层实现上来讲  ArrayL...
    99+
    2023-06-02
  • 怎么理解spark的自定义分区和排序及spark与jdbc
    这篇文章将为大家详细讲解有关怎么理解spark的自定义分区和排序及spark与jdbc,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。//自定义分区import org.apache...
    99+
    2023-06-02
  • Mybatis——#{}和${}的区别
    在使用mybatis的时候我们会使用到#{}和${}这两个符号来为sql语句传参数,那么这两者有什么区别呢? #{}是预编译处理,是占位符,${}是字符串替换,是拼接符 Mybatis在处理#{}...
    99+
    2023-09-13
    mybatis java mysql
  • spring和springmvc的区别
    spring 是一个开源框架,是为了解决企业应用程序开发,功能如下◆目的:解决企业应用开发的复杂性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围:任何Java应用简单来说,Spring是一个轻量级的控制反转(...
    99+
    2023-06-05
  • cshtml和html的区别
    cshtml和html的区别在Web开发中,我们可能会经常使用到两种不同的文件类型,即cshtml和html。这两种文件类型具有很大的相似性,但是他们之间还是有很大的区别的。本文将为大家介绍cshtml和html的区别。文件类型CSHTML...
    99+
    2023-05-14
  • python中=和==的区别
    python中“=”表示的是赋值,是将某一数值赋给某个变量,且无返回值;而“==”表示的是判断两个数据是否相等,其返回值为True或False。实例:a = 33 == 4print(a)输出结果为:3false...
    99+
    2024-04-02
  • python2和python3的区别
    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和×××操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%,还有很大的提升空间。 2...
    99+
    2023-01-31
    区别
  • pip和pip3的区别
    一、Python版本的区别 pip:pip是Python 2版本的包管理工具,它用于安装和管理Python 2版本的软件包。 pip3:pip3是Python 3版本的包管理工具,它用于安装和管理Python 3版本的软...
    99+
    2023-10-29
    区别 pip
  • oem和odm的区别
    1、概念不同 oem:OEM(Original Entrusted Manufacture)的汉语意思是“原始设备制造商”,基本含义是定牌生产合作,俗称“代工”。 OEM,就是品牌生产者不直接生产产品,而是利用自己掌握的“关键的核心技术”负...
    99+
    2023-10-29
    区别 oem odm
  • c++中::和:的区别
    双冒号 (::) 用于命名空间作用域解析和类静态成员访问,单冒号 (:) 用于基类初始化和隐式类型转换。 C++ 中 :: 和 : 的区别 在 C++ 编程语言中,双冒号 (::) 和...
    99+
    2024-04-26
    c++ 作用域 隐式类型转换
  • c++中|和||的区别
    c++ 中 |(按位或)和 ||(逻辑或)之间的区别在于:1. 运算:| 进行逐位比较,而 || 进行逻辑比较。2. 优先级:|| 优先级高于 |。3. 用途:| 用于位掩码和移位运算,...
    99+
    2024-04-28
    c++
  • request.form()和request()的区别
    request.form()是Flask中的方法,用于获取表单数据。它返回一个MultiDict对象,可以通过键获取表单字段的值。r...
    99+
    2023-09-07
    区别
  • HashMap和Hashtable的区别
    相同点: HashMap和Hashtable都是java.util包下的类HashMap和Hashtable都实现了Map接口,存储方式都是key-value形式HashMap和Hashtable同时...
    99+
    2023-09-01
    java 哈希算法 开发语言
  • request.setAttribute()和session.setAttribute()的区别
    request.setAttribute()方法用于在HttpServletRequest对象中设置一个属性的值,该属性的作用范围是...
    99+
    2023-09-01
    区别
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作