У меня есть имена столбцов в смешанных случаях в моем Dataframe, например sum(TXN_VOL)
Я хочу преобразовать их в верхний регистр, например SUM(TXN_VOL)
Я не буду знать все имена столбцов, поэтому не могу преобразовать их, используя жесткое кодирование.
Либо Мне нужно перебрать все имена столбцов и преобразовать каждое из них в ВЕРХНИЙ РЕГИСТР. ИЛИ есть встроенная функция для изменения всех имен столбцов на ВЕРХНИЙ РЕГИСТР
Я пробовал:
String[] columnNames = finalBcDF.columns();
Dataset<Row> x = null;
for(String columnName : columnNames) {
x = finalBcDF.withColumnRenamed(columnName, columnName.toUpperCase());
}
Но при этом каждый раз будет создаваться новый фрейм данных, поэтому желаемого результата это не даст.
Я проверял многие сайты, но не могу понять, как это сделать на Java.
Кто-нибудь может здесь помочь?
РЕДАКТИРОВАТЬ
В одном из ответов:
Как уменьшить регистр имен столбцов фрейма данных, но не его значений?
ответ дан для Scala и PySpark, но я не могу преобразовать его в Java, может ли кто-нибудь помочь?




Итерация была бы хорошей идеей. Несмотря на то, что создается новый экземпляр класса Java DataFrame. Поскольку Spark оценивается лениво, то потери производительности не будет.
Ссылка: https://data-flair.training/blogs/apache-spark-lazy-evaluation/
Вот как вы можете преобразовать имена столбцов в верхний регистр с помощью 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);