如何在 Spark SQL 中缓存和持久化临时表?

Posted

技术标签:

【中文标题】如何在 Spark SQL 中缓存和持久化临时表?【英文标题】:How to cache and persist the temporary tables in Spark SQL? 【发布时间】:2015-03-23 12:59:59 【问题描述】:

我有用于读取文本文件并用作内存中已注册临时表的工作代码。我想使用脚本或模块导入加载一组这些表,然后以交互方式查询它们。如果将此代码放入脚本和函数中,我应该返回哪个对象? sc 上下文?桌子? HadoopRDD?

file = "/file.tsv"
lines = sc.textFile(file)
parts = lines.map(lambda l: l.split("\t")).filter(lambda line:len(line)==7)

active_sessions = parts.map(lambda p: Row( 
    session=p[0]
    , user_id=p[1]
    , created=p[2]
    , updated=p[3]
    , id=p[4]
    , deleted=p[5]
    , resource_id=p[6]))

schemaTable = sqlContext.inferSchema(active_sessions)
schemaTable.registerTempTable("active_sessions")
sqlContext.cacheTable("active_sessions")

【问题讨论】:

【参考方案1】:

我遇到了同样的问题并最终返回:

return sqlContext.table("active_sessions")

虽然我已经将它注册为一个表而不是一个 temptable,但它也适用于 temptables。

【讨论】:

临时表和只是表有什么区别?表会被存储到缓存中,而临时表不会?

以上是关于如何在 Spark SQL 中缓存和持久化临时表?的主要内容,如果未能解决你的问题,请参考以下文章

Spark:通过对临时表执行 sql 查询来创建临时表

如何将 Excel 中的数据插入 Spark SQL 中的临时表中

Spark sql注册的临时表不能在sqlContext.read()中使用?

如何在 spark sql 中创建永久表

Spark SQL - 未找到已注册的临时表

我们如何在 Spark 结构化流 2.4.4 中缓存/持久化数据集