我想将每行的Spark Dataframe转换为String,每个列值之间都有一个分隔符。
例如: 我的输入数据帧'df'有3列“firstname”,“lastname”,“age”,有两条记录,如下所示。
第1行:John Abhraham 21 第二排:史蒂夫奥斯汀22
我想创建一个只有一列的新数据框,其中包含如下数据 第1行:John $ Abhraham 21美元 Row2:Steve $ Austin $ 22
任何人都可以帮忙这样做。
答案 0 :(得分:3)
我没有方便的Spark外壳,但我认为这个内衬应该这样做:
def stringifyRows(df: DataFrame, sep: String): DataFrame
= df.map(row => row.mkString(sep)).toDf("myColumnName")
对于您的示例,您将其称为stringifyRows(myDf, "$")
。如果这不起作用,请告诉我错误消息是什么。
答案 1 :(得分:1)
您可以使用concat
。
例如:
df.select(concat($"firstname", lit("$"), $"lastname", lit("$"), "age")).show()
OR
df.withColumn("newColumnName",concat($"firstname", lit("$"), $"lastname", lit("$"), "age")).show()