Spark - 多次使用数据框而无需多次卸载

Posted

技术标签:

【中文标题】Spark - 多次使用数据框而无需多次卸载【英文标题】:Spark - use dataframe many times without many unloads 【发布时间】:2018-03-07 20:24:05 【问题描述】:

我有问题。如何在不将其再次卸载到 redshift 的情况下复制数据框?

val companiesData = spark.read.format("com.databricks.spark.redshift")
.option("url","jdbc:redshift://xxxx:5439/cf?user="+user+"&password="+password)
.option("query","select * from cf_core.company")
//.option("dbtable",schema+"."+table)
.option("aws_iam_role","arn:aws:iam::xxxxxx:role/somerole")
.option("tempdir","s3a://xxxxx/Spark")
.load()

import class.companiesData
class test 
val secondDF = filteredDF(companiesData)

 def filteredDF(df: Dataframe): Dataframe 
   val result = df.select("companynumber")
  result
 

在这种情况下,这将卸载数据两次。首先从表中选择 *,其次它将通过仅选择公司编号卸载。我如何可以一次卸载数据并多次操作?这对我来说是个严重的问题。感谢帮助

【问题讨论】:

【参考方案1】:

“卸载”是指读取数据吗?如果是这样,您为什么确定它被阅读了两次?事实上,您的代码中没有任何操作,所以我什至不确定数据是否正在被读取。如果您确实尝试在代码中的其他位置访问 secondDF,则 spark 应该 仅读取您在类“测试”中选择的列。我不能 100% 确定这一点,因为我以前从未使用 redshift 将数据加载到 spark 中。

一般来说,如果你想重用一个数据帧,你应该使用缓存它

companiesData.cache()

然后,每当您在数据帧上调用操作时,它都会被缓存到内存中。

【讨论】:

以上是关于Spark - 多次使用数据框而无需多次卸载的主要内容,如果未能解决你的问题,请参考以下文章

microsoft office visio已停止工作:一不小心,就出现这个问题,抓狂。卸载安装多次,正版也不行,请帮忙~

CFileDialog问题。异常退出

求教一个uwsgi异常退出的问题

Spark Mllib kmeans 示例,使用数据框而不是 textFile

Apache Spark错误使用hadoop将数据卸载到AWS S3

将 hive 表卸载到。使用 Spark 或 pyspark 或 python 的 dat 文件