首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库上的火花-缓存Hive表

数据库上的火花-缓存Hive表
EN

Stack Overflow用户
提问于 2018-03-19 14:25:33
回答 2查看 1.9K关注 0票数 2

我们将事实表(30列)存储在S3上的拼花文件中,并在此文件上创建表并随后缓存它。表使用以下代码片段创建:

代码语言:javascript
运行
复制
val factTraffic = spark.read.parquet(factTrafficData)
factTraffic.write.mode(SaveMode.Overwrite).saveAsTable("f_traffic")
%sql CACHE TABLE f_traffic

我们在这个表(文件)上运行许多不同的计算,并且正在寻找缓存数据的最佳方法,以便在随后的计算中更快地访问数据。问题是,由于某种原因,从拼板读取数据并进行计算,然后从内存中访问数据会更快。一个重要的注意事项是,我们没有利用每一栏。通常,每次计算大约6-7列,每次都有不同的列.

有没有一种方法可以在内存中缓存这个表,这样我们就可以更快地访问它,而不是从地板上读取?

EN

Stack Overflow用户

回答已采纳

发布于 2018-03-19 20:44:49

缓存中的母化数据格式,您应该这样做:

代码语言:javascript
运行
复制
val factTraffic = spark.read.parquet(factTrafficData)
factTraffic.write.mode(SaveMode.Overwrite).saveAsTable("f_traffic")
val df_factTraffic = spark.table("f_traffic").cache
df_factTraffic.rdd.count
// now df_factTraffic is materalized in memory

另见https://stackoverflow.com/a/42719358/1138523

但是,这是否有意义是值得怀疑的,因为parquet是一种柱状文件格式(这意味着投影非常有效),而且如果每个查询都需要不同的列,缓存将不会对您有所帮助。

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

https://stackoverflow.com/questions/49365308

复制
相关文章

相似问题

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