PySpark 中的 mkString 等价物是什么?

Bal*_*ala 3 python scala apache-spark pyspark

我正在将数据帧转换为管道分隔值并将其写入 Spark shell (scala) 中的文件。但我对 PySpark 一无所知。希望得到一些帮助。

特别是我不知道如何用“|”连接每一列

这是一个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")
Run Code Online (Sandbox Code Playgroud)

ags*_*s29 5

像这样的东西:

stgDF.rdd.map(lambda line: "|".join([str(x) for x in line]))
Run Code Online (Sandbox Code Playgroud)

解释:

'|'.joinmkStringScala 中的the 等效——它接受一个列表作为参数,然后将列表的元素与分隔符连接起来'|'。列表理解[str(x) for x in line]只是在连接之前将行的所有元素转换为字符串。