scala - 使用整数将相同的行添加到 Spark Dataframe
问题描述
假设以下数据框df1
:
df1 :
+---------+--------+-------+
|A |B |C |
+---------+--------+-------+
|toto |tata |titi |
+---------+--------+-------+
我有N = 3
我想使用的整数,以便使用以下方法在Dataframe中创建3
重复项:df2
df1
df2 :
+---------+--------+-------+
|A |B |C |
+---------+--------+-------+
|toto |tata |titi |
|toto |tata |titi |
|toto |tata |titi |
+---------+--------+-------+
有任何想法吗 ?
解决方案
从这种情况下的Spark-2.4+
使用arrays_zip + array_repeat + explode
功能。
val df=Seq(("toto","tata","titi")).toDF("A","B","C")
df.withColumn("arr",explode(array_repeat(arrays_zip(array("A"),array("B"),array("c")),3))).
drop("arr").
show(false)
//or dynamic way
val cols=df.columns.map(x => col(x))
df.withColumn("arr",explode(array_repeat(arrays_zip(array(cols:_*)),3))).
drop("arr").
show(false)
//+----+----+----+
//|A |B |C |
//+----+----+----+
//|toto|tata|titi|
//|toto|tata|titi|
//|toto|tata|titi|
//+----+----+----+
推荐阅读
- android - Android Studio,不匹配支持库版本错误,但不知道它在哪里指定
- python - How to sort a list with a custom key using the Python C API?
- android - 没有找到 void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() 的实现
- python - 使用 BeautifulSoup 和 Python 从多个标签中提取文本,例如具有类的 h1 和 p 标签
- wpf - Why does Unity “RegisterInstance” function in Prism Framework cann't return a single instance?
- javascript - Photoshop Extendscript: How to var check currently opened files and execute commands for certain filenames
- hyperledger-fabric - 对等通道创建 - 仅评估失败 0 个策略得到满足 Hyperledger Fabric
- asp.net-core-mvc - Serilog:为每个请求创建和跟踪唯一的日志上下文?
- python - 如何通过对两列施加的多个标准删除 Pandas 数据框中的行?
- regex - 如何从用户当前使用的任何代码编辑器中获取文本?- 自动