首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >createOrReplaceTempView在Spark中是如何工作的?

createOrReplaceTempView在Spark中是如何工作的?
EN

Stack Overflow用户
提问于 2017-05-17 05:26:06
回答 3查看 160.9K关注 0票数 74

我是Spark和Spark SQL的新手。

createOrReplaceTempView在Spark中是如何工作的?

如果我们将对象的RDD注册为表,spark会将所有数据保存在内存中吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-17 07:10:10

createOrReplaceTempView创建(或者替换,如果视图名称已经存在)一个延迟计算的“视图”,然后可以像Spark SQL中的hive表一样使用它。除非缓存支撑视图的数据集,否则它不会持久存储到内存中。

代码语言:javascript
运行
复制
scala> val s = Seq(1,2,3).toDF("num")
s: org.apache.spark.sql.DataFrame = [num: int]

scala> s.createOrReplaceTempView("nums")

scala> spark.table("nums")
res22: org.apache.spark.sql.DataFrame = [num: int]

scala> spark.table("nums").cache
res23: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [num: int]

scala> spark.table("nums").count
res24: Long = 3

只有在.count调用之后,才会完全缓存数据。下面是它已被缓存的证据:

相关SO:spark createOrReplaceTempView vs createGlobalTempView

相关引用(与持久表相比):“与createOrReplaceTempView命令不同,saveAsTable将实体化DataFrame的内容,并创建一个指向配置单元元存储中的数据的指针。”来自https://spark.apache.org/docs/latest/sql-programming-guide.html#saving-to-persistent-tables

注意:createOrReplaceTempView以前是registerTempTable

票数 81
EN

Stack Overflow用户

发布于 2017-07-23 03:46:38

CreateOrReplaceTempView会在内存中创建一个临时的表视图,它目前不是持久的,但是你可以在上面运行SQL query。如果你想保存它,你可以持久化或者使用saveAsTable来保存。

首先,我们读取.csv格式的数据,然后转换为数据帧并创建临时视图

读取.csv格式的数据

代码语言:javascript
运行
复制
val data = spark.read.format("csv").option("header","true").option("inferSchema","true").load("FileStore/tables/pzufk5ib1500654887654/campaign.csv")

打印模式

代码语言:javascript
运行
复制
data.printSchema

代码语言:javascript
运行
复制
data.createOrReplaceTempView("Data")

现在,我们可以在刚刚创建的表视图上运行SQL查询

代码语言:javascript
运行
复制
  %sql SELECT Week AS Date, Campaign Type, Engagements, Country FROM Data ORDER BY Date ASC

票数 26
EN

Stack Overflow用户

发布于 2018-07-10 22:42:34

SparkSQl支持使用Dataset和Dataframe API编写程序,并且需要支持SQL语言。

为了在DataFrames上支持Sql,首先它需要一个带有列名的表定义,如果它创建了表,hive metastore将获得许多不必要的表,因为Spark-Sql本身就驻留在hive上。因此,它将创建一个临时视图,该视图暂时在配置单元中可用,并用作任何其他配置单元表,一旦Spark上下文停止,它将被删除。

为了创建视图,开发人员需要一个名为createOrReplaceTempView的实用程序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44011846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档