Как изменить имя столбца базы данных в верхний регистр в Spark, используя Java - PullRequest
0 голосов
/ 02 января 2019

У меня есть несколько имен столбцов в смешанных случаях в моем Dataframe, как sum(TXN_VOL) Я хочу преобразовать их в верхний регистр, как SUM(TXN_VOL)

Я не буду знать все имена столбцов, поэтому не могу преобразовать их с помощью жесткого кодирования.

Либо Мне нужно перебрать все имена столбцов и преобразовать каждое из них в верхний регистр. ИЛИ есть встроенная функция для изменения имен всех столбцов на UPPER CASE

То, что я пробовал, это:

String[] columnNames = finalBcDF.columns();
                    Dataset<Row> x = null;
                    for(String columnName : columnNames) {
                    x = finalBcDF.withColumnRenamed(columnName, columnName.toUpperCase());
                }

Но это будет каждый раз создавать новый Dataframe, поэтому это не даст желаемого результата.

Я проверил на многих сайтах, но не вижу, как я могу это сделать на Java.

Может кто-нибудь помочь здесь?

EDIT

В одном из ответов:

Как уменьшить регистр имен столбцов фрейма данных, но не его значений?

дан ответ для Scala и PySpark, но я не могу преобразовать его в Java, кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вот как вы можете преобразовать имена столбцов в верхний регистр, используя 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);
0 голосов
/ 02 января 2019

Итерации было бы хорошо, чтобы пойти подход. Несмотря на то, что создан новый экземпляр класса Java DataFrame. Так как спарк оценивается лениво, поэтому не будет никакого снижения производительности.

Ссылка: https://data -flair.training / blogs / apache-spark-lazy -valuation /

...