scala - PySpark 等效于 Scala API 中的函数“typedLit”
问题描述
我们typedLit
在Scala API for Spark中有一个函数可以将 Array 或 Map 添加为列值。
import org.apache.spark.sql.functions.typedLit
val df1 = Seq((1, 0), (2, 3)).toDF("a", "b")
df1.withColumn("seq", typedLit(Seq(1,2,3)))
.show(truncate=false)
+---+---+---------+
|a |b |seq |
+---+---+---------+
|1 |0 |[1, 2, 3]|
|2 |3 |[1, 2, 3]|
+---+---+---------+
我在 PySpark 中找不到等价物。我们如何在 PySpark 中创建一个以 Array 为列值的列?
解决方案
pyspark 中还没有等效的函数,但您可以拥有一个数组列,如下所示:
from pyspark.sql.functions import array, lit
df = sc.parallelize([[1,2], [3,4]]).toDF(['a', 'b'])
df.withColumn('seq', array([lit(i) for i in [1,2,3]])).show()
输出:
+---+---+---------+
| a| b| seq|
+---+---+---------+
| 1| 2|[1, 2, 3]|
| 3| 4|[1, 2, 3]|
+---+---+---------+
推荐阅读
- python - 手动插入框架设置滚动条不起作用 tkinter
- javascript - 按内容查找 div
- reactjs - React - 找不到模块 - 好像目录不存在
- xamarin.forms - MonoAndroid90 的指定语言目标缺失。确保为“MonoAndroid”安装了正确的工具
- java - 应该为“serialVersionUID”分配什么值?
- go - 仅输入类型的函数签名(无变量)
- linux - 如何从tail输出grep并包含文件名?
- pytorch - 为什么torchvision 预训练模型比从零训练的模型表现更好?
- javascript - 将嵌套的 while 循环更改为 for 循环... Javascript 矩阵
- javascript - 如何从 Firebase Firestore 获取数组