将Spark Dataframes的每一行转换为String,并在scala中的每个列值之间使用分隔符

时间:2016-10-31 23:50:22

标签: scala apache-spark-sql

我想将每行的Spark Dataframe转换为String,每个列值之间都有一个分隔符。

例如: 我的输入数据帧'df'有3列“firstname”,“lastname”,“age”,有两条记录,如下所示。

第1行:John Abhraham 21 第二排:史蒂夫奥斯汀22

我想创建一个只有一列的新数据框,其中包含如下数据 第1行:John $ Abhraham 21美元 Row2:Steve $ Austin $ 22

任何人都可以帮忙这样做。

2 个答案:

答案 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()