使用pyspark,spark + databricks时如何在数据框中添加完全不相关的列

时间:2019-04-07 01:58:19

标签: string apache-spark dataframe pyspark databricks

假设我有一个数据框:

myGraph=spark.createDataFrame([(1.3,2.1,3.0),
                               (2.5,4.6,3.1),
                               (6.5,7.2,10.0)],
                              ['col1','col2','col3'])

我想添加一个新的字符串列,使其看起来像:

enter image description here

from pyspark.sql.functions import lit
myGraph=myGraph.withColumn('rowName',lit('xxx'))

直到此处,rowName中的值均为“ xxx”。但是我不知道如何在rowName中添加新的列值('col1','col2','col3')?

1 个答案:

答案 0 :(得分:1)

您可以使用内置rand()函数和udf helper函数创建一个随机的int值(1-N),以生成新的字符串,如下所示:

val randColumnUDF = udf((rand: Long) => s"X${rand}")
val N = 10000

df.withColumn("rand", randColumnUDF(rand() * N)).show(false)

+----+
|rand|
+----+
|X1  |
|X8  |
|X6  |
|... |
+----+

上面的代码将在1到10000之间的X后面附加一个随机数,以产生值:X1,X23等。