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已停止工作:一不小心,就出现这个问题,抓狂。卸载安装多次,正版也不行,请帮忙~
Spark Mllib kmeans 示例,使用数据框而不是 textFile