我们有一个函数 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]|
+---+---+---------+
关于scala - PySpark 等效于来自 Scala API 的函数 "typedLit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62115150/