首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储数据,查看星星之火中的元组

如何存储数据,查看星星之火中的元组
EN

Stack Overflow用户
提问于 2021-08-10 12:49:26
回答 2查看 347关注 0票数 0

我正在尝试并行地从MongoDB获取数据,并将所有数据存储在一个集合中,查看名称,以便我可以将它们引用回来。

为此,我创建了一个集合,在这里我试图存储数据格式和视图。我正在将错误元素附加到集合中。我试过用向量,列表,塞克。但似乎什么都不适合我。

有没有办法处理这些问题?

代码语言:javascript
复制
var mongoFrames = Nil

for(c <- collections) {
    var connectionString = connectionInt.setCollection(c);
    var dframe = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri", connectionString).load()
    var view = dframe.createOrReplaceTempView(c);
    var mongoQuery = s"select * from $c where tuid in (${tuidIn.mkString(",")})";

    var tup = (c, dframe, view, mongoQuery)
    mongoFrames += tup
}

for(v <- mongoFrames) yield spark.sql(v._4).collect() // load data from source into spark

更新

当尝试使用+:时,我会收到以下错误

错误:值+:不是(String,org.apache.spark.sql.DataFrame,Unit,String) mongoFrames +:mongoFrames

的成员

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-10 13:49:33

你可以把它写成:

代码语言:javascript
复制
var mongoFrames: Seq[Tuple3[String, DataFrame,String]] = Seq.empty

代码语言:javascript
复制
var tup: Tuple[String, DataFrame, String] = (c, dframe, mongoQuery)

mongoFrames = mongoFrames :+ tup

然后

迭代它

代码语言:javascript
复制
for(v <- mongoFrames) yield spark.sql(v._3).collect() 

编辑1:

在本例中,迭代集合的一种更惯用的方法是编写:

代码语言:javascript
复制
mongoFrames.foreach(spark.sql(_._3).collect())

使用匿名函数。

这是以下简称:

代码语言:javascript
复制
mongoFrames.foreach(mongoFrame => spark.sql(mongoFrame._3).collect())
票数 2
EN

Stack Overflow用户

发布于 2021-08-10 13:30:46

这应该适用于你:

代码语言:javascript
复制
var mongoFrames = List.empty[(String, DataFrame, Unit, String)]

for(c <- collections) {
//...
mongoFrames = mongoFrames:+ tup
}

不要在元组中添加createOrReplaceTempView变量,因为方法返回单元没有用。您可以在SparkSession中使用具有其名称的访问权限。

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

https://stackoverflow.com/questions/68727139

复制
相关文章

相似问题

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