首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从数据集行中选择列

从数据集行中选择列
EN

Stack Overflow用户
提问于 2019-10-22 10:33:59
回答 3查看 537关注 0票数 0

我想在Spark数据集上循环,并根据每行的特征将特定值保存在Map中。我是Spark和Scala的新手,所以我加入了一个简单的例子来说明我在python中要做的事情。

python中的最小工作示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mydict = dict()
for row in data:
    if row['name'] == "Yan":    
        mydict[row['id']] =  row['surname']
    else:
        mydict[row['id']] = "Random lad"

其中,data是org.apache.spark.sql.Datasetorg.apache.spark.sql.Row.类型的(大) spark数据集

你知道Spark或Scala的方式吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-22 10:59:23

您不能遍历Dataset的内容,因为它们在运行此代码的机器上是不可访问的,而是分散在(可能有许多)不同的工作节点上。这是像spark这样的分布式执行引擎的基本概念。

相反,您必须在函数式( map、filter、reduce、... )中操作数据。操作传播到工作进程)或声明性(在工作进程上执行的sql查询)方式。

为了实现你的目标,你可以在你的数据上运行一个地图,检查名字是否等于"Yan“,然后从那里继续下去。在此转换之后,您可以collect您的数据帧并将其转换为字典。

您还应该检查使用Spark和映射的方法:您似乎希望在mydict中为data的每个元素创建一个条目。这意味着你的数据要么足够小,以至于你实际上不需要使用Spark,要么它可能会失败,因为它不适合你的驱动程序内存。

票数 1
EN

Stack Overflow用户

发布于 2019-10-22 11:02:56

我想你就是在找这样的东西。如果你的最终df不是很大,你可以收集它并存储为map。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala> df.show()
+---+----+--------+
| id|name|surrname|
+---+----+--------+
|  1| Yan|  abc123|
|  2| Abc|  def123|
+---+----+--------+


scala> df.select('id, when('name === "Yan", 'surrname).otherwise("Random lad")).toDF("K","V").show()
+---+----------+
|  K|         V|
+---+----------+
|  1|    abc123|
|  2|Random lad|
+---+----------+
票数 1
EN

Stack Overflow用户

发布于 2019-10-22 11:03:40

这是一个简单的方法,但是要小心使用collect(),因为它会收集driver中的数据。数据应该能够适应驱动程序。

我不建议你这样做。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var df: DataFrame = Seq(
  ("1", "Yan", "surname1"),
  ("2", "Yan1", "surname2"),
  ("3", "Yan", "surname3"),
  ("4", "Yan2", "surname4")
).toDF("id", "name", "surname")

val myDict = df.withColumn("newName", when($"name" === "Yan", $"surname").otherwise("RandomeName"))
  .rdd.map(row => (row.getAs[String]("id"), row.getAs[String]("newName")))
  .collectAsMap()

myDict.foreach(println)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(2,RandomeName)
(1,surname1)
(4,RandomeName)
(3,surname3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58502313

复制
相关文章
ECharts数据集( dataset )的行或列映射为系列(series)
用户可以使用 seriesLayoutBy 配置项,改变图表对于行列的理解。seriesLayoutBy 可取值:
别团等shy哥发育
2023/02/25
1.1K0
ECharts数据集( dataset )的行或列映射为系列(series)
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.3K0
【说站】Python DataFrame如何根据列值选择行
Pyspark处理数据中带有列分隔符的数据集
本篇文章目标是处理在数据集中存在列分隔符或分隔符的特殊场景。对于Pyspark开发人员来说,处理这种类型的数据集有时是一件令人头疼的事情,但无论如何都必须处理它。
deephub
2021/01/25
4.1K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.1K0
用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
全栈程序员站长
2022/07/09
1.7K0
SQL中的行转列和列转行
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。
luanhz
2021/06/25
7.2K0
SQL 中的行转列和列转行
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT…CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。
玖柒的小窝
2021/11/08
5.6K0
SQL 中的行转列和列转行
列存储、行存储
Sybase在2004年左右就推出了列存储的Sybase IQ数据库系统,主要用于在线分析、数据挖掘等查询密集型应用。列存储,缩写为DSM,相对于NSM(N-ary storage model),其主要区别在于:
全栈程序员站长
2022/09/14
7.9K0
列存储、行存储
数据库的方向 - 行vs列
前言: 转载的好文不多,但此篇的确是难得一见的好文,如若不信,请仔细阅读。 此篇文章没有波涛汹涌的起伏,没有繁多的代码,只有悠然自得的文笔。 因此,分享此文给大家。 翻译原文链接:https://ww
谙忆
2021/01/21
1.1K0
数据库的方向 - 行vs列
用过Excel,就会获取pandas数据框架中的值、行和列
至此,我们已经学习了使用Python pandas来输入/输出(即读取和保存文件)数据,现在,我们转向更深入的部分。
fanjy
2021/11/29
19.4K0
用过Excel,就会获取pandas数据框架中的值、行和列
Spark中SQL列和并为一行
但是在 spark 中没有 GROUP_CONCAT 命令,查找后发现命令 concat_ws :
机器学习和大数据挖掘
2019/07/02
1.7K0
Bootstrap行和列
在Bootstrap中,行(Row)和列(Column)是构建响应式网格布局的核心组件。它们允许我们创建灵活的网格系统,以便在不同的屏幕尺寸下进行布局。
堕落飞鸟
2023/05/17
2.1K0
sublime 列选择 原
2016年11月17日 09:27:24 zzh_my 阅读数:20295 标签: sublime text 更多
拓荒者
2019/03/08
2.6K0
Pandas DataFrame显示行和列的数据不全
pd.set_option('display.max_columns', None)
用户7886150
2020/12/26
6.8K0
FPGA计算3行同列数据之和
本文介绍了如何利用FPGA实现Sobel边缘检测算法,通过仿真实验证明该方法可以大幅提高边缘检测的实时性,从而在嵌入式系统中得到广泛应用。
NingHeChuan
2018/01/05
1.4K0
FPGA计算3行同列数据之和
SQL如何只让特定列中只显示一行数据
我们如果在某个表里面,如何让其中某列的其中一行数据,只是显示一次呢? 示例表 StudentID Last_Name First_Name Gender GradeLevel Class Pupil_Email Relationship Pupil_Parent_Email 5013 Wang Zack M Grade 9 Senior SG9 B 5013@example.com 爸爸 5013a@qq.com 5013 Wang Zack M Grade 9 Senior SG9 B 5013@exam
繁华是客
2023/03/03
8.9K0
行观点与列观点
行观点xA 行观点 列观点Ax 列观点
坑吭吭
2018/10/11
5590
行观点与列观点
dataframe行变换为列
使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions :
机器学习和大数据挖掘
2019/07/01
1.1K0
SQL行转列、列转行
这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。
全栈程序员站长
2022/07/21
1.6K0
SQL行转列、列转行
hive行转列/列转行
先用concat_ws函数将将星座和血型用“,”连接后group by 用collect_set函数对name聚合,用concat_ws函数对聚合后的name用“|”分割
chimchim
2022/11/13
2K0
hive行转列/列转行

相似问题

SAS:将数据集从行转换为列

29

根据其他数据集表选择数据集表中的行

10

根据同一行中的不同列值选择数据集

15

如何从两列5行数据集生成单列10行数据集

11

Python熊猫数据从列中选择行

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文