apache-spark - SPARK TempView 性能
问题描述
我在 SO 44011846 上找到了这句话:
与传统的临时表不同,临时视图根本没有物化到内存中。它对于访问 SQL 中的数据很有用,但要了解它的语句必须在每次访问时都进行评估 –</p>
这是否意味着如果 Hive 是 TempView 的源,它将一直回到 Hive?
我认为是这样,因此大量重复访问在性能方面是一个问题。
解决方案
火花 1.6
临时表/视图不存储在内存中。它们仅对从 hive/rdbms 访问数据有用。
如果您使用 Hive-
hiveContext.select("select * from tableA").registerTempTable("tableA")
上面的语句只注册临时表。是转型。当执行任何操作时,它会在 hive 上执行 sql 并创建一个临时表。每当执行任何操作时,它都会执行。
如果要将表缓存在内存中,则必须使用以下语句-
hiveContext.cacheTable("tableA")
这是懒惰的评价。每当执行任何操作时,它将执行 sql 并将临时表保存在内存中。下一次,对内存表执行的操作。它不会每次都评估。
Spark2.0
registerTempTable 替换为 createOrReplaceTempView
推荐阅读
- java - 使用 DOCX4j 覆盖现有表行
- cloud - 为什么我的公共 IP 来自美国,而我的 VM 位于 southamerica-east1-a?
- postgresql - postgres 中的 sp_send_dbmail 替代方案?发送 Postgres 电子邮件报告的简单方法?
- oracle - Oracle Apex 模态对话框链接被错误转换
- javascript - 每当在子组件中更新时更新父元素中的数据
- javascript - 如果字段未定义,则 HTML 中的 Angular 6 显示不适用
- mysql - 未将值插入到正确的记录/ s MySQL
- sql-server - 使用具有缺失值的应用从多个多值记录构建数据集
- curl - 如果不使用系统中的证书,curl 中的公钥固定不起作用
- python - Mayavi 修复了所有场景的颜色条