Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Spark Scala:从另一个dataframe更新dataframe列的值

Spark Scala:从另一个dataframe更新dataframe列的值
EN

Stack Overflow用户
提问于 2019-04-22 20:29:11
回答 2查看 855关注 0票数 1

A=

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------------+------------+------+
|        Name| Nationality|Salary|
+------------+------------+------+
|    A. Abbas|        Iraq|   €2K|
| A. Abdallah|      France|   €1K|
|A. Abdennour|     Tunisia|  €31K|

B=

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------------+------------+
|        Name|Salary      |
+------------+------------+
|    A. Abbas|€4K         |
| A. Abdallah|€1K         |
|A. Abdennour|€33K        |

预期的updatedDF应如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------------+------------+------+
|        Name| Nationality|Salary|
+------------+------------+------+
|    A. Abbas|        Iraq|   €4K|
| A. Abdallah|      France|   €1K|
|A. Abdennour|     Tunisia|  €33K|

我尝试使用spark scala代码,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
updatedDF = a.join(b, Seq("Name"), "inner")
updatedDF.show()

但是在执行join之后,我的输出中有重复项。如何在不重复的情况下合并两个数据帧?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-23 07:36:40

如果有重复,这意味着名称列不是唯一的。我建议尝试添加索引列以用于join,然后删除它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // Add index now...
    a = addColumnIndex(a).withColumn("index", monotonically_increasing_id)
    println("1- a count: " + a.count())

    // Add index now...
    b = addColumnIndex(b).withColumn("index", monotonically_increasing_id)
    println("b count: " + b.count())

    def addColumnIndex(df: DataFrame) = {
        spark.sqlContext.createDataFrame(
            df.rdd.zipWithIndex.map {
                case (row, index) => Row.fromSeq(row.toSeq :+ index)
            },
            StructType(df.schema.fields :+ StructField("index", LongType, false)))
    }

    ab = a.join(b, Seq("index", "Name"), "inner").drop(a.col("Salary")).drop(a.col("index"))

    println("3- ab count: " + ab.count())
票数 0
EN

Stack Overflow用户

发布于 2019-04-23 04:51:21

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val a = sc.parallelize(List(("A. Abbas","Iraq","2K"),("A. Abdallah","France","1K"),("A. Abdennour","Tunisia","31K"))).toDF("Name","Nationality","Salary")
val b = sc.parallelize(List(("A. Abbas","4K"),("A. Abdallah","1K"),("A. Abdennour","33K"))).toDF("Name","Salary")
b.join(a,Seq("Name"),"inner").drop(a.col("Salary")).show

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

https://stackoverflow.com/questions/55800706

复制
相关文章
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7K0
Spark DataFrame
DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表。SchemaRDD作为Apache Spark 1.0版本中的实验性工作,它在Apache Spark 1.3版本中被命名为DataFrame。对于熟悉Python pandas DataFrame或者R DataFrame的读者,Spark DataFrame是一个近似的概念,即允许用户轻松地使用结构化数据(如数据表)。
week
2018/12/07
9180
Spark 与 DataFrame
在 Spark 中,除了 RDD 这种数据容器外,还有一种更容易操作的一个分布式数据容器 DateFrame,它更像传统关系型数据库的二维表,除了包括数据自身以外还包括数据的结构信息(Schema),这就可以利用类似 SQL 的语言来进行数据访问。
EmoryHuang
2022/10/31
1.8K0
Spark DataFrame简介(二)
Spark的TimestampType类型与Java的java.sql.Timestamp对应,
用户1217611
2020/06/19
4440
Spark DataFrame简介(一)
本片将介绍Spark RDD的限制以及DataFrame(DF)如何克服这些限制,从如何创建DataFrame,到DF的各种特性,以及如何优化执行计划。最后还会介绍DF有哪些限制。
用户1217611
2020/06/19
1.8K0
Spark DataFrame简介(一)
spark dataframe 转换 json
但是上面发现每一个key:value都放在一个括号里面,怎么把他们合并成起来?只需要文本处理一下:
机器学习和大数据挖掘
2020/04/16
2.3K0
Spark DataFrame基本操作
DataFrame的概念来自R/Pandas语言,不过R/Pandas只是runs on One Machine,DataFrame是分布式的,接口简单易用。 Threshold: Spark RDD API VS MapReduce API One Machine:R/Pandas 官网的说明 http://spark.apache.org/docs/2.1.0/sql-programming-guide.html#datasets-and-dataframes 拔粹如下: A Dataset is
sparkle123
2018/04/26
1K0
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.3K0
【说站】Python DataFrame如何根据列值选择行
dataframe行变换为列
使用 import org.apache.spark.sql.functions 里面的函数,具体的方式可以看 functions :
机器学习和大数据挖掘
2019/07/01
1.1K0
spark dataframe新增列的处理
利用withColumn函数就能实现对dataframe中列的添加。但是由于withColumn这个函数中的第二个参数col必须为原有的某一列。所以默认先选择了个ID。
sparkexpert
2022/05/07
8330
pandas和spark的dataframe互转
由于pandas的方式是单机版的,即toPandas()的方式是单机版的,所以参考breeze_lsw改成分布式版本:
机器学习和大数据挖掘
2019/07/01
2.9K0
Spark SQL DataFrame与RDD交互
Spark SQL 支持自动将 JavaBeans 的 RDD 转换为 DataFrame。使用反射获取的 BeanInfo 定义了表的 schema。目前为止,Spark SQL 还不支持包含 Map 字段的 JavaBean。但是支持嵌套的 JavaBeans,List 以及 Array 字段。你可以通过创建一个实现 Serializable 的类并为其所有字段设置 getter 和 setter 方法来创建一个 JavaBean。
smartsi
2019/08/07
1.7K0
Spark DataFrame写入HBase的常用方式
Spark是目前最流行的分布式计算框架,而HBase则是在HDFS之上的列式分布式存储引擎,基于Spark做离线或者实时计算,数据结果保存在HBase中是目前很流行的做法。例如用户画像、单品画像、推荐系统等都可以用HBase作为存储媒介,供客户端使用。 因此Spark如何向HBase中写数据就成为很重要的一个环节了。本文将会介绍三种写入的方式,其中一种还在期待中,暂且官网即可... 代码在spark 2.2.0版本亲测 1. 基于HBase API批量写入 第一种是最简单的使用方式了,就是基于RDD的分区
用户1154259
2018/03/28
4.3K0
Spark DataFrame写入HBase的常用方式
《从0到1学习Spark》--DataFrame和Dataset探秘
昨天小强带着大家了解了Spark SQL的由来、Spark SQL的架构和SparkSQL四大组件:Spark SQL、DataSource Api、DataFrame Api和Dataset Api。今天小强和大家一起揭开Spark SQL背后DataFrame和Dataset的面纱。
程序员小强
2019/09/20
1.3K0
《从0到1学习Spark》--DataFrame和Dataset探秘
【技术分享】Spark DataFrame入门手册
Spark SQL是spark主要组成模块之一,其主要作用与结构化数据,与hadoop生态中的hive是对标的。而DataFrame是spark SQL的一种编程抽象,提供更加便捷同时类同与SQL查询语句的API,让熟悉hive的数据分析工程师能够非常快速上手。
腾讯云TI平台
2019/08/06
5.1K0
Spark(RDD,CSV)创建DataFrame方式
spark将csv转换为DataFrame,可以先文件读取为RDD,然后再进行map操作,对每一行进行分割。 再将schema和rdd分割后的Rows回填,sparkSession创建的dataFrame
Tim在路上
2020/08/04
1.5K0
pandas dataframe 新增单列和多列
dataframe assign方法,返回一个新对象(副本),不影响旧dataframe对象
lovelife110
2021/01/14
4.3K0
python用符号拼接DataFrame两列
碰到Null值时,会报错,因为none不可与str运算 解决如下,加入if判断即可
诡途
2022/01/07
1.7K0
dataframe填充缺失值_pandas填充空值
将其Nan全部填充为0,这时再打印的话会发现根本未填充,这是因为没有加上参数inplace参数。
全栈程序员站长
2022/09/22
2.8K0
点击加载更多

相似问题

更新spark scala中的dataframe struct列值

10

Spark scala基于其他DataFrame修改DataFrame列

121

更新Dataframe架构读取Spark Scala

11

从Scala中的spark dataframe列中获取top值

30

Spark Scala dataframe中的列拆分

54
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文