我有一个spark dataframe df。我需要根据Map类型的键值对来更新Spark Dataframe 的列名。
df.show()
| col1|col2 |col3|
| 2 | Ive|1989|
|Tom | null|1981|
| 4 | John|1991|
Map_value = (col1 -> id, col2 -> name, col3 -> year)
字符串
需要帮助。我不知道该怎么办
预期的输出:
| id | name|year|
| 2 | Ive|1989|
|Tom | null|1981|
| 4 | John|1991|
型
2条答案
按热度按时间sycxhyv71#
鉴于:
字符串
在顶层定义:
型
产生:
型
注意事项:
fieldNames检查使用ds.schema,这可能非常昂贵,因此更喜欢使用已知字段而不是. schema。在大量字段上使用withColumn或withColumn重命名可能会严重影响性能,因为在生成的代码中并不是所有的投影都被删除了,所以希望尽可能保持投影的数量较低。
0pizxfdo2#
您可以使用
withColumnRenamed
来重命名列。所以使用伪代码,代码应该是:
字符串
对于map中的每个key/value,在dataframe中,将列key重命名为新名称value。