Переименуйте столбцы в spark, используя @JsonProperty при создании наборов данных

Есть ли способ переименовать имена столбцов в наборе данных, используя аннотации Джексона при создании набора данных?

Мой класс кодировщика выглядит следующим образом:

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import scala.Serializable;
import javax.persistence.Table;

      @Builder 
      @Data 
      @AllArgsConstructor
      @EqualsAndHashCode 
      @Table(name = "sample_table")
      public class SampleRecord implements Serializable {
         @JsonProperty("sample_id")
         private Long sampleId;
         @JsonProperty("sample_name")
         private String name;
         @JsonProperty("sample_desc")
         private String description; 
      }

Моя цель - переименовать столбцы в соответствии с @JsonProperty, чтобы я мог повторно использовать те же функции класса и json.

Пожалуйста, найдите связанные версии модулей: - Spark: 2.4.0 (со scala 2.11) - jackson-module-scala_2.11: 2.9.6

Дайте мне знать, если вам нужна дополнительная информация. Помощь приветствуется.

1 ответ


public class SampleRecord implements Serializable {
         private Long sampleId;

         private String name;

         private String description; 


@JsonProperty("sample_id")
public void setSampleId(Long sampleId) {
        this.sampleId = sampleId;
    }

@JsonProperty("sample_name")
public void setName(String name) {
        this.name = name;
    }


@JsonProperty("sample_desc")
public void setDescription(String description) {
        this.description = description;
    }
}

Интересная идея. Как бы я это сделал:

  1. Вставьте ваши данные в фрейм данных.
  2. Напишите служебный метод, который принимает фрейм данных и имя класса (здесь SampleRecord).
  3. Используйте интроспекцию для чтения аннотаций (вы можете добавить их, если вам нужно определить конкретные свойства).
  4. Переименуйте столбцы с помощью withColumnRenamed() в кадре данных.
  5. Вернуть измененный фрейм данных.

Е.И.В.

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