首页 > 解决方案 > SPARK TempView 性能

问题描述

我在 SO 44011846 上找到了这句话:

与传统的临时表不同,临时视图根本没有物化到内存中。它对于访问 SQL 中的数据很有用,但要了解它的语句必须在每次访问时都进行评估 –</p>

这是否意味着如果 Hive 是 TempView 的源,它将一直回到 Hive?

我认为是这样,因此大量重复访问在性能方面是一个问题。

标签: apache-spark

解决方案


火花 1.6

临时表/视图不存储在内存中。它们仅对从 hive/rdbms 访问数据有用。

如果您使用 Hive-

hiveContext.select("select * from tableA").registerTempTable("tableA")

上面的语句只注册临时表。是转型。当执行任何操作时,它会在 hive 上执行 sql 并创建一个临时表。每当执行任何操作时,它都会执行。

如果要将表缓存在内存中,则必须使用以下语句-

 hiveContext.cacheTable("tableA")

这是懒惰的评价。每当执行任何操作时,它将执行 sql 并将临时表保存在内存中。下一次,对内存表执行的操作。它不会每次都评估。

Spark2.0

registerTempTable 替换为 createOrReplaceTempView


推荐阅读