如何在Spark的map函数中获取列名?

时间:2017-09-26 17:37:04

标签: python apache-spark dataframe pyspark

我有一个宽表作为Spark数据帧(pyspark),对于每个单元格,我需要将数据转换为column_name:column_name:value格式。我正在尝试使用map函数,但我无法获取其中的列名。即使这样也行不通:

map_dummy(c, v): 
  return c+":"+c+":"+v 

metadata.select(*(map_dummy(c, col(c)) for c in metadata.columns)).show()

知道如何将数据转换为我想要的格式吗?

1 个答案:

答案 0 :(得分:1)

您可以使用内置函数执行此操作:

metadata.select(concat(lit(c), lit(":"), lit(c), lit(":"), c)  for c in metadata.columns)).show()

其中concat是PySpark SQL模块的函数