Как изменить имя столбца базы данных на верхний регистр в Spark с помощью Java

У меня есть имена столбцов в смешанных случаях в моем 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, может ли кто-нибудь помочь?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
3 125
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итерация была бы хорошей идеей. Несмотря на то, что создается новый экземпляр класса 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);

Другие вопросы по теме