如何使用Java在Spark中将数据库的列名更改为大写

时间:2019-01-02 05:45:54

标签: java apache-spark apache-spark-sql apache-spark-dataset

我的数据框中有一些混合使用的列名,例如new Date("2018-09-03").getDate(); 我想将它们转换为大写字母,例如sum(TXN_VOL)

我将不知道所有的列名,所以我不能使用硬编码来转换它们。

要么,我必须遍历所有列名,并将每个列名都转换为大写。 ,有任何内置功能可将所有列名更改为大写

我尝试过的是:

SUM(TXN_VOL)

但这每次都会创建一个新的Dataframe,因此不会产生预期的结果。

我已经检查了许多站点,但看不到如何用Java进行检查。

有人可以在这里帮助吗?

编辑

答案之一:

How to lower the case of column names of a data frame but not its values?

Scala和PySpark给出了答案,但是我无法将其转换为Java,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

以下是使用Java 8将列名转换为大写字母的方法。

import static org.apache.spark.sql.functions.col;
import org.apache.spark.sql.Column;

df.select(Arrays.asList(df.columns()).stream().map(x -> col(x).as(x.toUpperCase())).toArray(size -> new Column[size])).show(false);

答案 1 :(得分:0)

进行迭代将是不错的选择。即使创建了新的DataFrame java类实例。由于Spark的评估比较懒惰,因此不会降低性能。

参考:https://data-flair.training/blogs/apache-spark-lazy-evaluation/