如何从 SCALA 中的表中提取与列表中存在的索引相对应的行。?

Posted

技术标签:

【中文标题】如何从 SCALA 中的表中提取与列表中存在的索引相对应的行。?【英文标题】:How can I extract rows from table in SCALA corresponding to indexes present in a list.? 【发布时间】:2017-04-03 13:28:48 【问题描述】:

使用 Scala,我将一个配置单元表加载到 spark 中 此表有 3 列和 10,000 行。我也有这个清单:

List[Int] = List(43, 48, 353, 413, 645, 674, 764, 873, 1018, 1170, 1206, 1626)

我必须从表中提取与给定列表中存在的元素相对应的所有行(包括所有列)。我怎样才能做到这一点? 我需要数据帧格式的最终​​输出。

【问题讨论】:

这是什么意思 - “使用 Scala,我有一个 3 列和 10000 行的表?”。 Scala 中没有表。您是在谈论 Spark-SQL 表和 Spark DataFrame 吗? 是的,我的意思是 Spark-SQL 表和数据框。我仅从数据框中获得了此表。是否可以从数据框本身获取所需的行? 【参考方案1】:
val l = List(43, 48, 353, 413, 645, 674, 764, 873, 1018, 1170, 1206, 1626)
val table: Array[Array[T]] = ???
table.map(col => l.map(index => col(index)))

这将返回table 的列,但仅包含您提到的行。请注意,如果您没有至少 1627 行,这将引发一些异常。

这是假设您的table 是一个Array,其元素是列。如果是Array[Row],则需要做类比:

l.map(index => table(index))

【讨论】:

嗯......无论谁对此投了反对票,都应该对此发表评论。 @Cyrille 在跳到对问题陈述有错误假设的解决方案之前,请尝试更多地考虑需求。 @SarveshKumarSingh 很抱歉。这个问题(以及我对此做出的假设)对我来说似乎很清楚,直到他们不是。我相应地编辑了我的答案。

以上是关于如何从 SCALA 中的表中提取与列表中存在的索引相对应的行。?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark 和 Scala 从两个表中提取所需信息

如何从存储在文件中的表中获取特定索引

从 id 不在 id 列表中的表中选择

如何从 SQL CE 中的表中构建逗号分隔列表?

powerbi中如何再度量值中提取虚拟表中的列

如何从Oracle数据库中的表中获取列名(字段名)列表?