PySpark中的mkString等价物是什么?

2024-10-01 15:47:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个数据帧转换成一个管道分隔的值,并将其写入sparkshell(scala)中的一个文件中。但我对Pypark一方一无所知。谢谢你的帮助。在

尤其是我不知道如何用“|”连接每个列

这是一个scala版本

scala> val stgDF = spark.read.table("tbl")
stgDF: org.apache.spark.sql.DataFrame = [name: string, num: int]

scala> stgDF.map(line => line.mkString("|")).take(2) //How do I do in PySpark?
res0: Array[String] = Array(spark|2001, yarn|2002)

scala> val tmp = stgDF.map(line => line.mkString("|")).rdd
tmp: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[20] at rdd at <console>:25

scala> tmp.saveAsTextFile("stgDF")

Tags: orgmapstringapachelinevalarraydo
2条回答

这是一个更紧凑,也是可以理解的:

stgDF.rdd.map(lambda x: "|".join(map(str,x)) )

很适合我。 以及保存为文本文件:

^{pr2}$

像这样:

stgDF.rdd.map(lambda line: "|".join([str(x) for x in line]))

说明:

'|'.join相当于Scala中的mkString,它以一个列表作为参数,然后用分隔符'|'连接列表中的元素。列表理解[str(x) for x in line]只是在连接之前将行的所有元素强制转换为字符串。在

相关问题 更多 >

    热门问题